From 5b0e735e71f31b8db682014f6694ce309aef61bc Mon Sep 17 00:00:00 2001 From: cdiener Date: Tue, 15 Apr 2025 22:28:30 +0200 Subject: [PATCH 1/9] build: repair k8s build and switch to tilt for local setup --- .dockerignore | 15 + .flake8 | 11 + Makefile | 61 +- README.md | 39 +- Tiltfile | 73 + setup.py => __setup.py | 0 k8s/.nvmrc | 2 +- k8s/.prettierignore | 8 + k8s/Dockerfile | 31 +- k8s/Dockerfile.dev | 31 +- k8s/Makefile | 20 + k8s/README.md | 2 +- k8s/cdk8s.yaml | 3 +- k8s/deploy.sh | 14 +- k8s/imports/external-secrets.io.ts | 30796 ++++++++++++++++ k8s/imports/generators.external-secrets.io.ts | 4075 ++ k8s/imports/k8s.ts | 13576 +++---- k8s/jest.config.js | 1 + k8s/kustomization.yaml | 59 - k8s/lib/charts/event-export-cron-job.ts | 228 - k8s/lib/charts/ingress-nginx.ts | 115 - k8s/lib/charts/licensing.ts | 210 - k8s/lib/common/config.ts | 460 + k8s/lib/{jobs.ts => common/licensing-job.ts} | 6 +- k8s/lib/common/local-ingress.ts | 48 + k8s/lib/common/secrets.ts | 203 + k8s/lib/{ => common}/service-account.ts | 17 +- .../service.ts} | 50 +- k8s/lib/constants.ts | 72 +- k8s/lib/licensing/licensing-app.ts | 113 + .../{ => licensing}/licensing-configmap.ts | 10 +- .../licensing-event-export-cron-job.ts | 120 + .../licensing-migration-job.ts} | 41 +- k8s/lib/licensing/licensing.ts | 111 + k8s/lib/namespace.ts | 11 + k8s/lib/{charts => postgres}/postgres.ts | 49 +- k8s/lib/types.ts | 14 + k8s/loc00/application-secret.env | 2 - k8s/main.ts | 142 +- k8s/package-lock.json | 3905 +- k8s/package.json | 27 +- .../ingress-nginx-chart.test.ts.snap | 38 + .../__snapshots__/licensing-app.test.ts.snap | 3019 ++ .../licensing-chart.test.ts.snap | 157 + .../licensing-local-chart.test.ts.snap | 99 + .../licensing-service-account.test.ts.snap | 61 + .../__snapshots__/postgres-chart.test.ts.snap | 107 + k8s/tests/ingress-nginx-chart.test.ts | 13 + k8s/tests/licensing-app.test.ts | 121 + k8s/tests/licensing-chart.test.ts | 29 + k8s/tests/licensing-local-chart.test.ts | 22 + k8s/tests/licensing-service-account.test.ts | 15 + k8s/tests/postgres-chart.test.ts | 15 + k8s/tsconfig.json | 4 +- pyproject.toml | 59 +- requirements-dev.in | 13 - requirements-dev.txt | 258 - requirements-export.in | 4 - requirements-export.txt | 197 - requirements.in | 21 - requirements.txt | 138 - skaffold.yaml | 46 - uv.lock | 1666 + 63 files changed, 48947 insertions(+), 11926 deletions(-) create mode 100644 .dockerignore create mode 100644 .flake8 create mode 100644 Tiltfile rename setup.py => __setup.py (100%) create mode 100644 k8s/.prettierignore create mode 100644 k8s/Makefile create mode 100644 k8s/imports/external-secrets.io.ts create mode 100644 k8s/imports/generators.external-secrets.io.ts delete mode 100644 k8s/kustomization.yaml delete mode 100644 k8s/lib/charts/event-export-cron-job.ts delete mode 100644 k8s/lib/charts/ingress-nginx.ts delete mode 100644 k8s/lib/charts/licensing.ts create mode 100644 k8s/lib/common/config.ts rename k8s/lib/{jobs.ts => common/licensing-job.ts} (89%) create mode 100644 k8s/lib/common/local-ingress.ts create mode 100644 k8s/lib/common/secrets.ts rename k8s/lib/{ => common}/service-account.ts (78%) rename k8s/lib/{services/licensing-service.ts => common/service.ts} (65%) create mode 100644 k8s/lib/licensing/licensing-app.ts rename k8s/lib/{ => licensing}/licensing-configmap.ts (77%) create mode 100644 k8s/lib/licensing/licensing-event-export-cron-job.ts rename k8s/lib/{charts/migration-job.ts => licensing/licensing-migration-job.ts} (76%) create mode 100644 k8s/lib/licensing/licensing.ts create mode 100644 k8s/lib/namespace.ts rename k8s/lib/{charts => postgres}/postgres.ts (73%) delete mode 100644 k8s/loc00/application-secret.env create mode 100644 k8s/tests/__snapshots__/ingress-nginx-chart.test.ts.snap create mode 100644 k8s/tests/__snapshots__/licensing-app.test.ts.snap create mode 100644 k8s/tests/__snapshots__/licensing-chart.test.ts.snap create mode 100644 k8s/tests/__snapshots__/licensing-local-chart.test.ts.snap create mode 100644 k8s/tests/__snapshots__/licensing-service-account.test.ts.snap create mode 100644 k8s/tests/__snapshots__/postgres-chart.test.ts.snap create mode 100644 k8s/tests/ingress-nginx-chart.test.ts create mode 100644 k8s/tests/licensing-app.test.ts create mode 100644 k8s/tests/licensing-chart.test.ts create mode 100644 k8s/tests/licensing-local-chart.test.ts create mode 100644 k8s/tests/licensing-service-account.test.ts create mode 100644 k8s/tests/postgres-chart.test.ts delete mode 100644 requirements-dev.in delete mode 100644 requirements-dev.txt delete mode 100644 requirements-export.in delete mode 100644 requirements-export.txt delete mode 100644 requirements.in delete mode 100644 requirements.txt delete mode 100644 skaffold.yaml create mode 100644 uv.lock diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..699f807 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,15 @@ +# ignore all +* + +# unignore image-related +!src/ +!tests/ +!alembic.ini +!SHA.txt +!LICENSE +!pytest.ini +!pyproject.toml +!README.md +!uv.lock +!uvicorn_disable_logging.json +!VERSION diff --git a/.flake8 b/.flake8 new file mode 100644 index 0000000..9090a6f --- /dev/null +++ b/.flake8 @@ -0,0 +1,11 @@ +[flake8] +ignore = E203, E266, W503 +exclude = + docs + k8s +max-line-length = 88 +max-complexity = 18 +select = B,C,E,F,W,T4,B9 +per-file-ignores = + tests/**.py: E501, F401 + src/alembic/env.py: F401, E402 \ No newline at end of file diff --git a/Makefile b/Makefile index 3828c07..bdfd1a3 100644 --- a/Makefile +++ b/Makefile @@ -1,62 +1,21 @@ SHELL := /bin/bash -.PHONY: k8s_synth -k8s_synth: +.PHONY: synth +synth: (cd k8s && source ${HOME}/.nvm/nvm.sh && nvm use && npm run synth) -.PHONY: k8s_install -k8s_install: +.PHONY: cdk_install +cdk_install: (cd k8s && source ${HOME}/.nvm/nvm.sh && nvm use && npm ci) -.PHONY: k8s_test -k8s_test: +.PHONY: cdk_test +cdk_test: (cd k8s && source ${HOME}/.nvm/nvm.sh && nvm use && npm run test) -.PHONY: k8s_test_update -k8s_test_update: +.PHONY: update_snapshots +update_snapshots: (cd k8s && source ${HOME}/.nvm/nvm.sh && nvm use && npm run test -- -u) -.PHONY: k8s_pretty -k8s_pretty: +.PHONY: cdk_pretty +cdk_pretty: (cd k8s && source ${HOME}/.nvm/nvm.sh && nvm use && npm run prettier) - -.PHONY: init -init: - kubectl create namespace licensing || true - skaffold run --cleanup=false --profile init - -.PHONY: run-api -run-api: - skaffold dev --profile run-api - -.PHONY: create-db -create-db: - skaffold run --cleanup=false --profile create-db - -.PHONY: pg-port-forward -pg-port-forward: - kubectl port-forward service/licensing-db 5433:5432 -n licensing - -.PHONY: run-migration -run-migration: - skaffold run --cleanup=false --profile run-migration - -.PHONY: run-event-export -run-event-export: - skaffold run --cleanup=false --profile run-event-export - -.PHONY: start -start: - make init - make create-db - make run-migration - kubectl wait --for=condition=complete --timeout=120s --namespace=licensing job/licensing-migration - make run-event-export - make run-api - -.PHONY: delete -delete: - skaffold delete -p init - skaffold delete -p run-api - skaffold delete -p create-db - skaffold delete -p run-event-export \ No newline at end of file diff --git a/README.md b/README.md index 87b08d4..4dd9057 100644 --- a/README.md +++ b/README.md @@ -113,15 +113,20 @@ We build a licensing service which combines the need of licensing on different l ## K8S Best practice is to run the application in a local k8s cluster. Please see k8s/README.md: -### Initialization + +#### Using Tilt +##### Installation +https://docs.tilt.dev/install +```bash +curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/install.sh | bash +``` +##### Starting ```bash -make k8s_install -make k8s_synth -make init +tilt up ``` -#### Starting +##### Stopping ```bash -make start +tilt down ``` ## Manually @@ -143,7 +148,27 @@ on your local postgreSQL database using the SQL query CREATE DATABASE licm; ``` -## Run uvicorn +### Install dependencies + +We rely on to manage the project and its dependencies: + +#### Create env +```shell +uv venv +source .venv/bin/activate +``` + +#### Sync your env +```shell +uv sync --extra export --extra tests +``` + +#### Install dependencies +```shell +uv pip install -e '.[export,tests]' +``` + +### Run uvicorn You can start the application using the following commands: ```sh cd diff --git a/Tiltfile b/Tiltfile new file mode 100644 index 0000000..d76bc26 --- /dev/null +++ b/Tiltfile @@ -0,0 +1,73 @@ +local("make dist", dir="k8s") + +k8s_yaml("k8s/dist/namespace.k8s.yaml") +k8s_yaml([f for f in listdir(os.path.join("k8s", "dist")) if not "namespace" in f]) + +k8s_resource( + objects=[ + "licensing:namespace", + "licensing:serviceaccount:licensing", + "licensing:role:licensing", + "licensing:rolebinding:licensing", + "licensing-config:configmap:licensing", + "licensing-db-init-db-script:configmap:licensing", + "licensing:secret:licensing", + "event-export:secret:licensing", + "licensing-ingress:ingress:licensing", + ], + new_name="licensing:k8s", + labels="licensing", +) +k8s_resource( + "licensing-db", + labels="licensing", + resource_deps=["licensing:k8s"], + port_forwards=["15432:5432"], +) +k8s_resource("licensing-migration", labels="licensing", resource_deps=["licensing-db"]) +# k8s_resource("licensing-api", labels="licensing", resource_deps=["licensing-migration"], port_forwards=['8000:8000']) +k8s_resource("licensing-api", labels="licensing", resource_deps=["licensing-migration"]) +k8s_resource( + "licensing-event-export", + labels="licensing", + resource_deps=["licensing-migration"], + auto_init=False, + trigger_mode=TRIGGER_MODE_MANUAL, +) + + +def build_local(): + python_version = str(read_file(".python-version")).strip("\n") + docker_build( + "licensing", + ".", + dockerfile=os.path.join("k8s", "Dockerfile.dev"), + build_args={"python_version": python_version}, + ) + + +def build_remote(): + build_info = decode_json( + local( + "curl -s https://licensing-{}.bettermarks.com/version".format(SEGMENT), + quiet=True, + ) + ) + version = build_info["version"] + print("Use remote version {}".format(version)) + docker_build( + "licensing", + ".", + dockerfile_contents="FROM 676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:{}".format( + version + ), + ) + + +SEGMENT = os.getenv("LICENSING_SEGMENT", "loc00") +BUILD_LOCAL = SEGMENT.startswith("loc") + +if BUILD_LOCAL: + build_local() +else: + build_remote() diff --git a/setup.py b/__setup.py similarity index 100% rename from setup.py rename to __setup.py diff --git a/k8s/.nvmrc b/k8s/.nvmrc index 23670da..85aee5a 100644 --- a/k8s/.nvmrc +++ b/k8s/.nvmrc @@ -1 +1 @@ -18.20.4 \ No newline at end of file +v20 \ No newline at end of file diff --git a/k8s/.prettierignore b/k8s/.prettierignore new file mode 100644 index 0000000..5621db9 --- /dev/null +++ b/k8s/.prettierignore @@ -0,0 +1,8 @@ +dist +imports +loc00 +node_modules +tests/__snapshots__ +jest.config.js +*.yaml +*.json diff --git a/k8s/Dockerfile b/k8s/Dockerfile index 12955e9..5292006 100644 --- a/k8s/Dockerfile +++ b/k8s/Dockerfile @@ -1,14 +1,35 @@ -FROM python:3.12.6-slim +ARG python_version 3.12.9 + +# INFO: we just install project dependencies in this layer +FROM python:${python_version}-slim-bookworm AS dependencies ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 +ENV UV_PROJECT_ENVIRONMENT=/venv +COPY --from=ghcr.io/astral-sh/uv:0.6.10 /uv /uvx /bin/ + +WORKDIR /code +COPY ./pyproject.toml . +COPY ./uv.lock . + +RUN uv venv && uv sync --frozen --no-dev --no-install-project + +# INFO: we take the virtual env and add the project itself +FROM python:${python_version}-slim-bookworm AS build +ENV UV_PROJECT_ENVIRONMENT=/venv +COPY --from=ghcr.io/astral-sh/uv:0.6.10 /uv /uvx /bin/ +COPY --from=dependencies /venv /venv WORKDIR /code -COPY ./requirements* /code/ +COPY ./src . +COPY ./pyproject.toml . +COPY ./uv.lock . -RUN python3 -m pip install --no-cache-dir -IU pip +RUN uv sync --extra export --frozen --no-editable --no-dev -COPY . /code/ -RUN python3 -m pip install --no-cache-dir .[export] +# INFO: final image only with virtual env +FROM python:${python_version}-slim-bookworm +ENV PYTHONUNBUFFERED 1 +COPY --from=build /venv /venv CMD ["uvicorn", "services.licensing.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "1", "--timeout-keep-alive", "0"] diff --git a/k8s/Dockerfile.dev b/k8s/Dockerfile.dev index 38c26da..ce314d8 100644 --- a/k8s/Dockerfile.dev +++ b/k8s/Dockerfile.dev @@ -1,14 +1,35 @@ -FROM python:3.12.6-slim +ARG python_version 3.12.9 + +# INFO: we just install project dependencies in this layer +FROM python:${python_version}-slim-bookworm AS dependencies ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 +ENV UV_PROJECT_ENVIRONMENT=/venv +COPY --from=ghcr.io/astral-sh/uv:0.6.10 /uv /uvx /bin/ + +WORKDIR /code +COPY ./pyproject.toml . +COPY ./uv.lock . + +RUN uv venv && uv sync --frozen --no-dev --no-install-project + +# INFO: we take the virtual env and add the project itself +FROM python:${python_version}-slim-bookworm AS build +ENV UV_PROJECT_ENVIRONMENT=/venv +COPY --from=ghcr.io/astral-sh/uv:0.6.10 /uv /uvx /bin/ +COPY --from=dependencies /venv /venv WORKDIR /code -COPY ./requirements* /code/ +COPY ./src . +COPY ./pyproject.toml . +COPY ./uv.lock . -RUN python3 -m pip install -IU pip +RUN uv sync --extra export --frozen --no-editable --no-dev -COPY . /code/ -RUN python3 -m pip install .[export] +# INFO: final image only with virtual env +FROM python:${python_version}-slim-bookworm +ENV PYTHONUNBUFFERED 1 +COPY --from=build /venv /venv CMD ["uvicorn", "services.licensing.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "1", "--log-config", "uvicorn_disable_logging.json", "--timeout-keep-alive", "0"] diff --git a/k8s/Makefile b/k8s/Makefile new file mode 100644 index 0000000..1fe1a02 --- /dev/null +++ b/k8s/Makefile @@ -0,0 +1,20 @@ +# Called from Tiltfile + +SHELL := /bin/sh + +# ref: tsconfig.json +SRCS_TS = $(shell find . -name node_modules -prune -o -type f -name '*.ts' -print) + + +.PHONY: all +all: dist + +node_modules: package-lock.json + npm ci + +dist: node_modules $(SRCS_TS) + npm run synth + +.PHONY: clean +clean: + rm -rf dist node_modules diff --git a/k8s/README.md b/k8s/README.md index 3cf9e67..b6d0e54 100644 --- a/k8s/README.md +++ b/k8s/README.md @@ -99,7 +99,7 @@ kubectl apply -f dist/-*yaml All required credentials for local development are part of the repo in `k8s/loc00` folder. 6. In oder to access the environment locally you need to add the following line to the `/etc/hosts` file: ```sh - echo "127.0.0.1 licensing.your-domain.loc" | sudo tee -a >> /etc/hosts + echo "127.0.0.1 licensing.opal.loc" | sudo tee -a >> /etc/hosts ``` 7. License-Service status: https://licensing.opal.loc:8443/v1/status diff --git a/k8s/cdk8s.yaml b/k8s/cdk8s.yaml index 69e3056..88b2f73 100644 --- a/k8s/cdk8s.yaml +++ b/k8s/cdk8s.yaml @@ -1,4 +1,5 @@ language: typescript app: ts-node main.ts imports: - - k8s@1.27.0 + - k8s@1.29.0 + - https://raw.githubusercontent.com/external-secrets/external-secrets/v0.9.16/deploy/crds/bundle.yaml diff --git a/k8s/deploy.sh b/k8s/deploy.sh index 1a4a2a8..c476a7a 100755 --- a/k8s/deploy.sh +++ b/k8s/deploy.sh @@ -7,6 +7,18 @@ kubectl apply \ kubectl apply \ -f dist/licensing-config.k8s.yaml +kubectl apply \ + -f dist/licensing-secrets.k8s.yaml + +# Wait for external secrets sync +for EXTERNAL_SECRET in ext-licensing ext-event-export ; do + REASON="" + until [ "${REASON}" == "SecretSynced" ] ; do + sleep 1 + REASON=$(kubectl -n licensing get es ${EXTERNAL_SECRET} -o json | jq -r '.status.conditions[].reason') + done +done + kubectl apply \ -f dist/migration.k8s.yaml kubectl wait --for=condition=complete --timeout=120s job/licensing-migration -n licensing @@ -19,4 +31,4 @@ kubectl apply \ -f dist/licensing.k8s.yaml # Wait for deployment to succeed -kubectl -n licensing rollout status --watch deployment/licensing-api \ No newline at end of file +kubectl -n licensing rollout status --watch deployment/licensing-api diff --git a/k8s/imports/external-secrets.io.ts b/k8s/imports/external-secrets.io.ts new file mode 100644 index 0000000..2712d2f --- /dev/null +++ b/k8s/imports/external-secrets.io.ts @@ -0,0 +1,30796 @@ +// generated by cdk8s +import { ApiObject, ApiObjectMetadata, GroupVersionKind } from 'cdk8s'; +import { Construct } from 'constructs'; + + +/** + * ClusterExternalSecret is the Schema for the clusterexternalsecrets API. + * + * @schema ClusterExternalSecret + */ +export class ClusterExternalSecret extends ApiObject { + /** + * Returns the apiVersion and kind for "ClusterExternalSecret" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'external-secrets.io/v1beta1', + kind: 'ClusterExternalSecret', + } + + /** + * Renders a Kubernetes manifest for "ClusterExternalSecret". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: ClusterExternalSecretProps = {}): any { + return { + ...ClusterExternalSecret.GVK, + ...toJson_ClusterExternalSecretProps(props), + }; + } + + /** + * Defines a "ClusterExternalSecret" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: ClusterExternalSecretProps = {}) { + super(scope, id, { + ...ClusterExternalSecret.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...ClusterExternalSecret.GVK, + ...toJson_ClusterExternalSecretProps(resolved), + }; + } +} + +/** + * ClusterExternalSecret is the Schema for the clusterexternalsecrets API. + * + * @schema ClusterExternalSecret + */ +export interface ClusterExternalSecretProps { + /** + * @schema ClusterExternalSecret#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * ClusterExternalSecretSpec defines the desired state of ClusterExternalSecret. + * + * @schema ClusterExternalSecret#spec + */ + readonly spec?: ClusterExternalSecretSpec; + +} + +/** + * Converts an object of type 'ClusterExternalSecretProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretProps(obj: ClusterExternalSecretProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_ClusterExternalSecretSpec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ClusterExternalSecretSpec defines the desired state of ClusterExternalSecret. + * + * @schema ClusterExternalSecretSpec + */ +export interface ClusterExternalSecretSpec { + /** + * The metadata of the external secrets to be created + * + * @schema ClusterExternalSecretSpec#externalSecretMetadata + */ + readonly externalSecretMetadata?: ClusterExternalSecretSpecExternalSecretMetadata; + + /** + * The name of the external secrets to be created defaults to the name of the ClusterExternalSecret + * + * @schema ClusterExternalSecretSpec#externalSecretName + */ + readonly externalSecretName?: string; + + /** + * The spec for the ExternalSecrets to be created + * + * @schema ClusterExternalSecretSpec#externalSecretSpec + */ + readonly externalSecretSpec: ClusterExternalSecretSpecExternalSecretSpec; + + /** + * The labels to select by to find the Namespaces to create the ExternalSecrets in. + * Deprecated: Use NamespaceSelectors instead. + * + * @schema ClusterExternalSecretSpec#namespaceSelector + */ + readonly namespaceSelector?: ClusterExternalSecretSpecNamespaceSelector; + + /** + * A list of labels to select by to find the Namespaces to create the ExternalSecrets in. The selectors are ORed. + * + * @schema ClusterExternalSecretSpec#namespaceSelectors + */ + readonly namespaceSelectors?: ClusterExternalSecretSpecNamespaceSelectors[]; + + /** + * Choose namespaces by name. This field is ORed with anything that NamespaceSelector ends up choosing. + * + * @schema ClusterExternalSecretSpec#namespaces + */ + readonly namespaces?: string[]; + + /** + * The time in which the controller should reconcile its objects and recheck namespaces for labels. + * + * @schema ClusterExternalSecretSpec#refreshTime + */ + readonly refreshTime?: string; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpec(obj: ClusterExternalSecretSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'externalSecretMetadata': toJson_ClusterExternalSecretSpecExternalSecretMetadata(obj.externalSecretMetadata), + 'externalSecretName': obj.externalSecretName, + 'externalSecretSpec': toJson_ClusterExternalSecretSpecExternalSecretSpec(obj.externalSecretSpec), + 'namespaceSelector': toJson_ClusterExternalSecretSpecNamespaceSelector(obj.namespaceSelector), + 'namespaceSelectors': obj.namespaceSelectors?.map(y => toJson_ClusterExternalSecretSpecNamespaceSelectors(y)), + 'namespaces': obj.namespaces?.map(y => y), + 'refreshTime': obj.refreshTime, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The metadata of the external secrets to be created + * + * @schema ClusterExternalSecretSpecExternalSecretMetadata + */ +export interface ClusterExternalSecretSpecExternalSecretMetadata { + /** + * @schema ClusterExternalSecretSpecExternalSecretMetadata#annotations + */ + readonly annotations?: { [key: string]: string }; + + /** + * @schema ClusterExternalSecretSpecExternalSecretMetadata#labels + */ + readonly labels?: { [key: string]: string }; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretMetadata' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretMetadata(obj: ClusterExternalSecretSpecExternalSecretMetadata | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'annotations': ((obj.annotations) === undefined) ? undefined : (Object.entries(obj.annotations).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'labels': ((obj.labels) === undefined) ? undefined : (Object.entries(obj.labels).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The spec for the ExternalSecrets to be created + * + * @schema ClusterExternalSecretSpecExternalSecretSpec + */ +export interface ClusterExternalSecretSpecExternalSecretSpec { + /** + * Data defines the connection between the Kubernetes Secret keys and the Provider data + * + * @schema ClusterExternalSecretSpecExternalSecretSpec#data + */ + readonly data?: ClusterExternalSecretSpecExternalSecretSpecData[]; + + /** + * DataFrom is used to fetch all properties from a specific Provider data + * If multiple entries are specified, the Secret keys are merged in the specified order + * + * @schema ClusterExternalSecretSpecExternalSecretSpec#dataFrom + */ + readonly dataFrom?: ClusterExternalSecretSpecExternalSecretSpecDataFrom[]; + + /** + * RefreshInterval is the amount of time before the values are read again from the SecretStore provider + * Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h" + * May be set to zero to fetch and create it once. Defaults to 1h. + * + * @default 1h. + * @schema ClusterExternalSecretSpecExternalSecretSpec#refreshInterval + */ + readonly refreshInterval?: string; + + /** + * SecretStoreRef defines which SecretStore to fetch the ExternalSecret data. + * + * @schema ClusterExternalSecretSpecExternalSecretSpec#secretStoreRef + */ + readonly secretStoreRef?: ClusterExternalSecretSpecExternalSecretSpecSecretStoreRef; + + /** + * ExternalSecretTarget defines the Kubernetes Secret to be created + * There can be only one target per ExternalSecret. + * + * @schema ClusterExternalSecretSpecExternalSecretSpec#target + */ + readonly target?: ClusterExternalSecretSpecExternalSecretSpecTarget; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpec(obj: ClusterExternalSecretSpecExternalSecretSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'data': obj.data?.map(y => toJson_ClusterExternalSecretSpecExternalSecretSpecData(y)), + 'dataFrom': obj.dataFrom?.map(y => toJson_ClusterExternalSecretSpecExternalSecretSpecDataFrom(y)), + 'refreshInterval': obj.refreshInterval, + 'secretStoreRef': toJson_ClusterExternalSecretSpecExternalSecretSpecSecretStoreRef(obj.secretStoreRef), + 'target': toJson_ClusterExternalSecretSpecExternalSecretSpecTarget(obj.target), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The labels to select by to find the Namespaces to create the ExternalSecrets in. + * Deprecated: Use NamespaceSelectors instead. + * + * @schema ClusterExternalSecretSpecNamespaceSelector + */ +export interface ClusterExternalSecretSpecNamespaceSelector { + /** + * matchExpressions is a list of label selector requirements. The requirements are ANDed. + * + * @schema ClusterExternalSecretSpecNamespaceSelector#matchExpressions + */ + readonly matchExpressions?: ClusterExternalSecretSpecNamespaceSelectorMatchExpressions[]; + + /** + * 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. + * + * @schema ClusterExternalSecretSpecNamespaceSelector#matchLabels + */ + readonly matchLabels?: { [key: string]: string }; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecNamespaceSelector' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecNamespaceSelector(obj: ClusterExternalSecretSpecNamespaceSelector | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'matchExpressions': obj.matchExpressions?.map(y => toJson_ClusterExternalSecretSpecNamespaceSelectorMatchExpressions(y)), + 'matchLabels': ((obj.matchLabels) === undefined) ? undefined : (Object.entries(obj.matchLabels).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * 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. + * + * @schema ClusterExternalSecretSpecNamespaceSelectors + */ +export interface ClusterExternalSecretSpecNamespaceSelectors { + /** + * matchExpressions is a list of label selector requirements. The requirements are ANDed. + * + * @schema ClusterExternalSecretSpecNamespaceSelectors#matchExpressions + */ + readonly matchExpressions?: ClusterExternalSecretSpecNamespaceSelectorsMatchExpressions[]; + + /** + * 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. + * + * @schema ClusterExternalSecretSpecNamespaceSelectors#matchLabels + */ + readonly matchLabels?: { [key: string]: string }; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecNamespaceSelectors' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecNamespaceSelectors(obj: ClusterExternalSecretSpecNamespaceSelectors | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'matchExpressions': obj.matchExpressions?.map(y => toJson_ClusterExternalSecretSpecNamespaceSelectorsMatchExpressions(y)), + 'matchLabels': ((obj.matchLabels) === undefined) ? undefined : (Object.entries(obj.matchLabels).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ExternalSecretData defines the connection between the Kubernetes Secret key (spec.data.) and the Provider data. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecData + */ +export interface ClusterExternalSecretSpecExternalSecretSpecData { + /** + * RemoteRef points to the remote secret and defines + * which secret (version/property/..) to fetch. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecData#remoteRef + */ + readonly remoteRef: ClusterExternalSecretSpecExternalSecretSpecDataRemoteRef; + + /** + * SecretKey defines the key in which the controller stores + * the value. This is the key in the Kind=Secret + * + * @schema ClusterExternalSecretSpecExternalSecretSpecData#secretKey + */ + readonly secretKey: string; + + /** + * SourceRef allows you to override the source + * from which the value will pulled from. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecData#sourceRef + */ + readonly sourceRef?: ClusterExternalSecretSpecExternalSecretSpecDataSourceRef; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecData' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecData(obj: ClusterExternalSecretSpecExternalSecretSpecData | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'remoteRef': toJson_ClusterExternalSecretSpecExternalSecretSpecDataRemoteRef(obj.remoteRef), + 'secretKey': obj.secretKey, + 'sourceRef': toJson_ClusterExternalSecretSpecExternalSecretSpecDataSourceRef(obj.sourceRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFrom + */ +export interface ClusterExternalSecretSpecExternalSecretSpecDataFrom { + /** + * Used to extract multiple key/value pairs from one secret + * Note: Extract does not support sourceRef.Generator or sourceRef.GeneratorRef. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFrom#extract + */ + readonly extract?: ClusterExternalSecretSpecExternalSecretSpecDataFromExtract; + + /** + * Used to find secrets based on tags or regular expressions + * Note: Find does not support sourceRef.Generator or sourceRef.GeneratorRef. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFrom#find + */ + readonly find?: ClusterExternalSecretSpecExternalSecretSpecDataFromFind; + + /** + * Used to rewrite secret Keys after getting them from the secret Provider + * Multiple Rewrite operations can be provided. They are applied in a layered order (first to last) + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFrom#rewrite + */ + readonly rewrite?: ClusterExternalSecretSpecExternalSecretSpecDataFromRewrite[]; + + /** + * SourceRef points to a store or generator + * which contains secret values ready to use. + * Use this in combination with Extract or Find pull values out of + * a specific SecretStore. + * When sourceRef points to a generator Extract or Find is not supported. + * The generator returns a static map of values + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFrom#sourceRef + */ + readonly sourceRef?: ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRef; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecDataFrom' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecDataFrom(obj: ClusterExternalSecretSpecExternalSecretSpecDataFrom | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'extract': toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromExtract(obj.extract), + 'find': toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromFind(obj.find), + 'rewrite': obj.rewrite?.map(y => toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromRewrite(y)), + 'sourceRef': toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRef(obj.sourceRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretStoreRef defines which SecretStore to fetch the ExternalSecret data. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecSecretStoreRef + */ +export interface ClusterExternalSecretSpecExternalSecretSpecSecretStoreRef { + /** + * Kind of the SecretStore resource (SecretStore or ClusterSecretStore) + * Defaults to `SecretStore` + * + * @default SecretStore` + * @schema ClusterExternalSecretSpecExternalSecretSpecSecretStoreRef#kind + */ + readonly kind?: string; + + /** + * Name of the SecretStore resource + * + * @schema ClusterExternalSecretSpecExternalSecretSpecSecretStoreRef#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecSecretStoreRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecSecretStoreRef(obj: ClusterExternalSecretSpecExternalSecretSpecSecretStoreRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kind': obj.kind, + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ExternalSecretTarget defines the Kubernetes Secret to be created + * There can be only one target per ExternalSecret. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecTarget + */ +export interface ClusterExternalSecretSpecExternalSecretSpecTarget { + /** + * CreationPolicy defines rules on how to create the resulting Secret + * Defaults to 'Owner' + * + * @default Owner' + * @schema ClusterExternalSecretSpecExternalSecretSpecTarget#creationPolicy + */ + readonly creationPolicy?: ClusterExternalSecretSpecExternalSecretSpecTargetCreationPolicy; + + /** + * DeletionPolicy defines rules on how to delete the resulting Secret + * Defaults to 'Retain' + * + * @default Retain' + * @schema ClusterExternalSecretSpecExternalSecretSpecTarget#deletionPolicy + */ + readonly deletionPolicy?: ClusterExternalSecretSpecExternalSecretSpecTargetDeletionPolicy; + + /** + * Immutable defines if the final secret will be immutable + * + * @schema ClusterExternalSecretSpecExternalSecretSpecTarget#immutable + */ + readonly immutable?: boolean; + + /** + * Name defines the name of the Secret resource to be managed + * This field is immutable + * Defaults to the .metadata.name of the ExternalSecret resource + * + * @default the .metadata.name of the ExternalSecret resource + * @schema ClusterExternalSecretSpecExternalSecretSpecTarget#name + */ + readonly name?: string; + + /** + * Template defines a blueprint for the created Secret resource. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecTarget#template + */ + readonly template?: ClusterExternalSecretSpecExternalSecretSpecTargetTemplate; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecTarget' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecTarget(obj: ClusterExternalSecretSpecExternalSecretSpecTarget | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'creationPolicy': obj.creationPolicy, + 'deletionPolicy': obj.deletionPolicy, + 'immutable': obj.immutable, + 'name': obj.name, + 'template': toJson_ClusterExternalSecretSpecExternalSecretSpecTargetTemplate(obj.template), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A label selector requirement is a selector that contains values, a key, and an operator that + * relates the key and values. + * + * @schema ClusterExternalSecretSpecNamespaceSelectorMatchExpressions + */ +export interface ClusterExternalSecretSpecNamespaceSelectorMatchExpressions { + /** + * key is the label key that the selector applies to. + * + * @schema ClusterExternalSecretSpecNamespaceSelectorMatchExpressions#key + */ + readonly key: string; + + /** + * operator represents a key's relationship to a set of values. + * Valid operators are In, NotIn, Exists and DoesNotExist. + * + * @schema ClusterExternalSecretSpecNamespaceSelectorMatchExpressions#operator + */ + readonly operator: string; + + /** + * 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. + * + * @schema ClusterExternalSecretSpecNamespaceSelectorMatchExpressions#values + */ + readonly values?: string[]; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecNamespaceSelectorMatchExpressions' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecNamespaceSelectorMatchExpressions(obj: ClusterExternalSecretSpecNamespaceSelectorMatchExpressions | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'operator': obj.operator, + 'values': obj.values?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A label selector requirement is a selector that contains values, a key, and an operator that + * relates the key and values. + * + * @schema ClusterExternalSecretSpecNamespaceSelectorsMatchExpressions + */ +export interface ClusterExternalSecretSpecNamespaceSelectorsMatchExpressions { + /** + * key is the label key that the selector applies to. + * + * @schema ClusterExternalSecretSpecNamespaceSelectorsMatchExpressions#key + */ + readonly key: string; + + /** + * operator represents a key's relationship to a set of values. + * Valid operators are In, NotIn, Exists and DoesNotExist. + * + * @schema ClusterExternalSecretSpecNamespaceSelectorsMatchExpressions#operator + */ + readonly operator: string; + + /** + * 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. + * + * @schema ClusterExternalSecretSpecNamespaceSelectorsMatchExpressions#values + */ + readonly values?: string[]; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecNamespaceSelectorsMatchExpressions' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecNamespaceSelectorsMatchExpressions(obj: ClusterExternalSecretSpecNamespaceSelectorsMatchExpressions | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'operator': obj.operator, + 'values': obj.values?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * RemoteRef points to the remote secret and defines + * which secret (version/property/..) to fetch. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataRemoteRef + */ +export interface ClusterExternalSecretSpecExternalSecretSpecDataRemoteRef { + /** + * Used to define a conversion Strategy + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataRemoteRef#conversionStrategy + */ + readonly conversionStrategy?: ClusterExternalSecretSpecExternalSecretSpecDataRemoteRefConversionStrategy; + + /** + * Used to define a decoding Strategy + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataRemoteRef#decodingStrategy + */ + readonly decodingStrategy?: ClusterExternalSecretSpecExternalSecretSpecDataRemoteRefDecodingStrategy; + + /** + * Key is the key used in the Provider, mandatory + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataRemoteRef#key + */ + readonly key: string; + + /** + * Policy for fetching tags/labels from provider secrets, possible options are Fetch, None. Defaults to None + * + * @default None + * @schema ClusterExternalSecretSpecExternalSecretSpecDataRemoteRef#metadataPolicy + */ + readonly metadataPolicy?: ClusterExternalSecretSpecExternalSecretSpecDataRemoteRefMetadataPolicy; + + /** + * Used to select a specific property of the Provider value (if a map), if supported + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataRemoteRef#property + */ + readonly property?: string; + + /** + * Used to select a specific version of the Provider value, if supported + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataRemoteRef#version + */ + readonly version?: string; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecDataRemoteRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecDataRemoteRef(obj: ClusterExternalSecretSpecExternalSecretSpecDataRemoteRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'conversionStrategy': obj.conversionStrategy, + 'decodingStrategy': obj.decodingStrategy, + 'key': obj.key, + 'metadataPolicy': obj.metadataPolicy, + 'property': obj.property, + 'version': obj.version, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SourceRef allows you to override the source + * from which the value will pulled from. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataSourceRef + */ +export interface ClusterExternalSecretSpecExternalSecretSpecDataSourceRef { + /** + * GeneratorRef points to a generator custom resource. + * + * + * Deprecated: The generatorRef is not implemented in .data[]. + * this will be removed with v1. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataSourceRef#generatorRef + */ + readonly generatorRef?: ClusterExternalSecretSpecExternalSecretSpecDataSourceRefGeneratorRef; + + /** + * SecretStoreRef defines which SecretStore to fetch the ExternalSecret data. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataSourceRef#storeRef + */ + readonly storeRef?: ClusterExternalSecretSpecExternalSecretSpecDataSourceRefStoreRef; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecDataSourceRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecDataSourceRef(obj: ClusterExternalSecretSpecExternalSecretSpecDataSourceRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'generatorRef': toJson_ClusterExternalSecretSpecExternalSecretSpecDataSourceRefGeneratorRef(obj.generatorRef), + 'storeRef': toJson_ClusterExternalSecretSpecExternalSecretSpecDataSourceRefStoreRef(obj.storeRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to extract multiple key/value pairs from one secret + * Note: Extract does not support sourceRef.Generator or sourceRef.GeneratorRef. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromExtract + */ +export interface ClusterExternalSecretSpecExternalSecretSpecDataFromExtract { + /** + * Used to define a conversion Strategy + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromExtract#conversionStrategy + */ + readonly conversionStrategy?: ClusterExternalSecretSpecExternalSecretSpecDataFromExtractConversionStrategy; + + /** + * Used to define a decoding Strategy + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromExtract#decodingStrategy + */ + readonly decodingStrategy?: ClusterExternalSecretSpecExternalSecretSpecDataFromExtractDecodingStrategy; + + /** + * Key is the key used in the Provider, mandatory + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromExtract#key + */ + readonly key: string; + + /** + * Policy for fetching tags/labels from provider secrets, possible options are Fetch, None. Defaults to None + * + * @default None + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromExtract#metadataPolicy + */ + readonly metadataPolicy?: ClusterExternalSecretSpecExternalSecretSpecDataFromExtractMetadataPolicy; + + /** + * Used to select a specific property of the Provider value (if a map), if supported + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromExtract#property + */ + readonly property?: string; + + /** + * Used to select a specific version of the Provider value, if supported + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromExtract#version + */ + readonly version?: string; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecDataFromExtract' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromExtract(obj: ClusterExternalSecretSpecExternalSecretSpecDataFromExtract | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'conversionStrategy': obj.conversionStrategy, + 'decodingStrategy': obj.decodingStrategy, + 'key': obj.key, + 'metadataPolicy': obj.metadataPolicy, + 'property': obj.property, + 'version': obj.version, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to find secrets based on tags or regular expressions + * Note: Find does not support sourceRef.Generator or sourceRef.GeneratorRef. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromFind + */ +export interface ClusterExternalSecretSpecExternalSecretSpecDataFromFind { + /** + * Used to define a conversion Strategy + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromFind#conversionStrategy + */ + readonly conversionStrategy?: ClusterExternalSecretSpecExternalSecretSpecDataFromFindConversionStrategy; + + /** + * Used to define a decoding Strategy + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromFind#decodingStrategy + */ + readonly decodingStrategy?: ClusterExternalSecretSpecExternalSecretSpecDataFromFindDecodingStrategy; + + /** + * Finds secrets based on the name. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromFind#name + */ + readonly name?: ClusterExternalSecretSpecExternalSecretSpecDataFromFindName; + + /** + * A root path to start the find operations. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromFind#path + */ + readonly path?: string; + + /** + * Find secrets based on tags. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromFind#tags + */ + readonly tags?: { [key: string]: string }; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecDataFromFind' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromFind(obj: ClusterExternalSecretSpecExternalSecretSpecDataFromFind | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'conversionStrategy': obj.conversionStrategy, + 'decodingStrategy': obj.decodingStrategy, + 'name': toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromFindName(obj.name), + 'path': obj.path, + 'tags': ((obj.tags) === undefined) ? undefined : (Object.entries(obj.tags).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromRewrite + */ +export interface ClusterExternalSecretSpecExternalSecretSpecDataFromRewrite { + /** + * Used to rewrite with regular expressions. + * The resulting key will be the output of a regexp.ReplaceAll operation. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromRewrite#regexp + */ + readonly regexp?: ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteRegexp; + + /** + * Used to apply string transformation on the secrets. + * The resulting key will be the output of the template applied by the operation. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromRewrite#transform + */ + readonly transform?: ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteTransform; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecDataFromRewrite' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromRewrite(obj: ClusterExternalSecretSpecExternalSecretSpecDataFromRewrite | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'regexp': toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteRegexp(obj.regexp), + 'transform': toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteTransform(obj.transform), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SourceRef points to a store or generator + * which contains secret values ready to use. + * Use this in combination with Extract or Find pull values out of + * a specific SecretStore. + * When sourceRef points to a generator Extract or Find is not supported. + * The generator returns a static map of values + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRef + */ +export interface ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRef { + /** + * GeneratorRef points to a generator custom resource. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRef#generatorRef + */ + readonly generatorRef?: ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefGeneratorRef; + + /** + * SecretStoreRef defines which SecretStore to fetch the ExternalSecret data. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRef#storeRef + */ + readonly storeRef?: ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefStoreRef; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRef(obj: ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'generatorRef': toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefGeneratorRef(obj.generatorRef), + 'storeRef': toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefStoreRef(obj.storeRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * CreationPolicy defines rules on how to create the resulting Secret + * Defaults to 'Owner' + * + * @default Owner' + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetCreationPolicy + */ +export enum ClusterExternalSecretSpecExternalSecretSpecTargetCreationPolicy { + /** Owner */ + OWNER = "Owner", + /** Orphan */ + ORPHAN = "Orphan", + /** Merge */ + MERGE = "Merge", + /** None */ + NONE = "None", +} + +/** + * DeletionPolicy defines rules on how to delete the resulting Secret + * Defaults to 'Retain' + * + * @default Retain' + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetDeletionPolicy + */ +export enum ClusterExternalSecretSpecExternalSecretSpecTargetDeletionPolicy { + /** Delete */ + DELETE = "Delete", + /** Merge */ + MERGE = "Merge", + /** Retain */ + RETAIN = "Retain", +} + +/** + * Template defines a blueprint for the created Secret resource. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplate + */ +export interface ClusterExternalSecretSpecExternalSecretSpecTargetTemplate { + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplate#data + */ + readonly data?: { [key: string]: string }; + + /** + * EngineVersion specifies the template engine version + * that should be used to compile/execute the + * template specified in .data and .templateFrom[]. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplate#engineVersion + */ + readonly engineVersion?: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateEngineVersion; + + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplate#mergePolicy + */ + readonly mergePolicy?: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateMergePolicy; + + /** + * ExternalSecretTemplateMetadata defines metadata fields for the Secret blueprint. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplate#metadata + */ + readonly metadata?: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateMetadata; + + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplate#templateFrom + */ + readonly templateFrom?: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFrom[]; + + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplate#type + */ + readonly type?: string; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecTargetTemplate' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecTargetTemplate(obj: ClusterExternalSecretSpecExternalSecretSpecTargetTemplate | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'data': ((obj.data) === undefined) ? undefined : (Object.entries(obj.data).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'engineVersion': obj.engineVersion, + 'mergePolicy': obj.mergePolicy, + 'metadata': toJson_ClusterExternalSecretSpecExternalSecretSpecTargetTemplateMetadata(obj.metadata), + 'templateFrom': obj.templateFrom?.map(y => toJson_ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFrom(y)), + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to define a conversion Strategy + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataRemoteRefConversionStrategy + */ +export enum ClusterExternalSecretSpecExternalSecretSpecDataRemoteRefConversionStrategy { + /** Default */ + DEFAULT = "Default", + /** Unicode */ + UNICODE = "Unicode", +} + +/** + * Used to define a decoding Strategy + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataRemoteRefDecodingStrategy + */ +export enum ClusterExternalSecretSpecExternalSecretSpecDataRemoteRefDecodingStrategy { + /** Auto */ + AUTO = "Auto", + /** Base64 */ + BASE64 = "Base64", + /** Base64URL */ + BASE64_URL = "Base64URL", + /** None */ + NONE = "None", +} + +/** + * Policy for fetching tags/labels from provider secrets, possible options are Fetch, None. Defaults to None + * + * @default None + * @schema ClusterExternalSecretSpecExternalSecretSpecDataRemoteRefMetadataPolicy + */ +export enum ClusterExternalSecretSpecExternalSecretSpecDataRemoteRefMetadataPolicy { + /** None */ + NONE = "None", + /** Fetch */ + FETCH = "Fetch", +} + +/** + * GeneratorRef points to a generator custom resource. + * + * + * Deprecated: The generatorRef is not implemented in .data[]. + * this will be removed with v1. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataSourceRefGeneratorRef + */ +export interface ClusterExternalSecretSpecExternalSecretSpecDataSourceRefGeneratorRef { + /** + * Specify the apiVersion of the generator resource + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataSourceRefGeneratorRef#apiVersion + */ + readonly apiVersion?: string; + + /** + * Specify the Kind of the resource, e.g. Password, ACRAccessToken etc. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataSourceRefGeneratorRef#kind + */ + readonly kind: string; + + /** + * Specify the name of the generator resource + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataSourceRefGeneratorRef#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecDataSourceRefGeneratorRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecDataSourceRefGeneratorRef(obj: ClusterExternalSecretSpecExternalSecretSpecDataSourceRefGeneratorRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiVersion': obj.apiVersion, + 'kind': obj.kind, + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretStoreRef defines which SecretStore to fetch the ExternalSecret data. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataSourceRefStoreRef + */ +export interface ClusterExternalSecretSpecExternalSecretSpecDataSourceRefStoreRef { + /** + * Kind of the SecretStore resource (SecretStore or ClusterSecretStore) + * Defaults to `SecretStore` + * + * @default SecretStore` + * @schema ClusterExternalSecretSpecExternalSecretSpecDataSourceRefStoreRef#kind + */ + readonly kind?: string; + + /** + * Name of the SecretStore resource + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataSourceRefStoreRef#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecDataSourceRefStoreRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecDataSourceRefStoreRef(obj: ClusterExternalSecretSpecExternalSecretSpecDataSourceRefStoreRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kind': obj.kind, + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to define a conversion Strategy + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromExtractConversionStrategy + */ +export enum ClusterExternalSecretSpecExternalSecretSpecDataFromExtractConversionStrategy { + /** Default */ + DEFAULT = "Default", + /** Unicode */ + UNICODE = "Unicode", +} + +/** + * Used to define a decoding Strategy + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromExtractDecodingStrategy + */ +export enum ClusterExternalSecretSpecExternalSecretSpecDataFromExtractDecodingStrategy { + /** Auto */ + AUTO = "Auto", + /** Base64 */ + BASE64 = "Base64", + /** Base64URL */ + BASE64_URL = "Base64URL", + /** None */ + NONE = "None", +} + +/** + * Policy for fetching tags/labels from provider secrets, possible options are Fetch, None. Defaults to None + * + * @default None + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromExtractMetadataPolicy + */ +export enum ClusterExternalSecretSpecExternalSecretSpecDataFromExtractMetadataPolicy { + /** None */ + NONE = "None", + /** Fetch */ + FETCH = "Fetch", +} + +/** + * Used to define a conversion Strategy + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromFindConversionStrategy + */ +export enum ClusterExternalSecretSpecExternalSecretSpecDataFromFindConversionStrategy { + /** Default */ + DEFAULT = "Default", + /** Unicode */ + UNICODE = "Unicode", +} + +/** + * Used to define a decoding Strategy + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromFindDecodingStrategy + */ +export enum ClusterExternalSecretSpecExternalSecretSpecDataFromFindDecodingStrategy { + /** Auto */ + AUTO = "Auto", + /** Base64 */ + BASE64 = "Base64", + /** Base64URL */ + BASE64_URL = "Base64URL", + /** None */ + NONE = "None", +} + +/** + * Finds secrets based on the name. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromFindName + */ +export interface ClusterExternalSecretSpecExternalSecretSpecDataFromFindName { + /** + * Finds secrets base + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromFindName#regexp + */ + readonly regexp?: string; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecDataFromFindName' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromFindName(obj: ClusterExternalSecretSpecExternalSecretSpecDataFromFindName | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'regexp': obj.regexp, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to rewrite with regular expressions. + * The resulting key will be the output of a regexp.ReplaceAll operation. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteRegexp + */ +export interface ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteRegexp { + /** + * Used to define the regular expression of a re.Compiler. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteRegexp#source + */ + readonly source: string; + + /** + * Used to define the target pattern of a ReplaceAll operation. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteRegexp#target + */ + readonly target: string; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteRegexp' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteRegexp(obj: ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteRegexp | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'source': obj.source, + 'target': obj.target, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to apply string transformation on the secrets. + * The resulting key will be the output of the template applied by the operation. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteTransform + */ +export interface ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteTransform { + /** + * Used to define the template to apply on the secret name. + * `.value ` will specify the secret name in the template. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteTransform#template + */ + readonly template: string; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteTransform' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteTransform(obj: ClusterExternalSecretSpecExternalSecretSpecDataFromRewriteTransform | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'template': obj.template, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * GeneratorRef points to a generator custom resource. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefGeneratorRef + */ +export interface ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefGeneratorRef { + /** + * Specify the apiVersion of the generator resource + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefGeneratorRef#apiVersion + */ + readonly apiVersion?: string; + + /** + * Specify the Kind of the resource, e.g. Password, ACRAccessToken etc. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefGeneratorRef#kind + */ + readonly kind: string; + + /** + * Specify the name of the generator resource + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefGeneratorRef#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefGeneratorRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefGeneratorRef(obj: ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefGeneratorRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiVersion': obj.apiVersion, + 'kind': obj.kind, + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretStoreRef defines which SecretStore to fetch the ExternalSecret data. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefStoreRef + */ +export interface ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefStoreRef { + /** + * Kind of the SecretStore resource (SecretStore or ClusterSecretStore) + * Defaults to `SecretStore` + * + * @default SecretStore` + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefStoreRef#kind + */ + readonly kind?: string; + + /** + * Name of the SecretStore resource + * + * @schema ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefStoreRef#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefStoreRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefStoreRef(obj: ClusterExternalSecretSpecExternalSecretSpecDataFromSourceRefStoreRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kind': obj.kind, + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * EngineVersion specifies the template engine version + * that should be used to compile/execute the + * template specified in .data and .templateFrom[]. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateEngineVersion + */ +export enum ClusterExternalSecretSpecExternalSecretSpecTargetTemplateEngineVersion { + /** v1 */ + V1 = "v1", + /** v2 */ + V2 = "v2", +} + +/** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateMergePolicy + */ +export enum ClusterExternalSecretSpecExternalSecretSpecTargetTemplateMergePolicy { + /** Replace */ + REPLACE = "Replace", + /** Merge */ + MERGE = "Merge", +} + +/** + * ExternalSecretTemplateMetadata defines metadata fields for the Secret blueprint. + * + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateMetadata + */ +export interface ClusterExternalSecretSpecExternalSecretSpecTargetTemplateMetadata { + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateMetadata#annotations + */ + readonly annotations?: { [key: string]: string }; + + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateMetadata#labels + */ + readonly labels?: { [key: string]: string }; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecTargetTemplateMetadata' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecTargetTemplateMetadata(obj: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateMetadata | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'annotations': ((obj.annotations) === undefined) ? undefined : (Object.entries(obj.annotations).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'labels': ((obj.labels) === undefined) ? undefined : (Object.entries(obj.labels).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFrom + */ +export interface ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFrom { + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFrom#configMap + */ + readonly configMap?: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMap; + + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFrom#literal + */ + readonly literal?: string; + + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFrom#secret + */ + readonly secret?: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecret; + + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFrom#target + */ + readonly target?: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromTarget; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFrom' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFrom(obj: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFrom | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'configMap': toJson_ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMap(obj.configMap), + 'literal': obj.literal, + 'secret': toJson_ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecret(obj.secret), + 'target': obj.target, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMap + */ +export interface ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMap { + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMap#items + */ + readonly items: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMapItems[]; + + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMap#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMap' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMap(obj: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMap | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'items': obj.items?.map(y => toJson_ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMapItems(y)), + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecret + */ +export interface ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecret { + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecret#items + */ + readonly items: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecretItems[]; + + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecret#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecret' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecret(obj: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecret | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'items': obj.items?.map(y => toJson_ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecretItems(y)), + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromTarget + */ +export enum ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromTarget { + /** Data */ + DATA = "Data", + /** Annotations */ + ANNOTATIONS = "Annotations", + /** Labels */ + LABELS = "Labels", +} + +/** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMapItems + */ +export interface ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMapItems { + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMapItems#key + */ + readonly key: string; + + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMapItems#templateAs + */ + readonly templateAs?: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMapItemsTemplateAs; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMapItems' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMapItems(obj: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMapItems | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'templateAs': obj.templateAs, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecretItems + */ +export interface ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecretItems { + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecretItems#key + */ + readonly key: string; + + /** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecretItems#templateAs + */ + readonly templateAs?: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecretItemsTemplateAs; + +} + +/** + * Converts an object of type 'ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecretItems' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecretItems(obj: ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecretItems | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'templateAs': obj.templateAs, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMapItemsTemplateAs + */ +export enum ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromConfigMapItemsTemplateAs { + /** Values */ + VALUES = "Values", + /** KeysAndValues */ + KEYS_AND_VALUES = "KeysAndValues", +} + +/** + * @schema ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecretItemsTemplateAs + */ +export enum ClusterExternalSecretSpecExternalSecretSpecTargetTemplateTemplateFromSecretItemsTemplateAs { + /** Values */ + VALUES = "Values", + /** KeysAndValues */ + KEYS_AND_VALUES = "KeysAndValues", +} + + +/** + * ClusterSecretStore represents a secure external location for storing secrets, which can be referenced as part of `storeRef` fields. + * + * @schema ClusterSecretStore + */ +export class ClusterSecretStore extends ApiObject { + /** + * Returns the apiVersion and kind for "ClusterSecretStore" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'external-secrets.io/v1alpha1', + kind: 'ClusterSecretStore', + } + + /** + * Renders a Kubernetes manifest for "ClusterSecretStore". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: ClusterSecretStoreProps = {}): any { + return { + ...ClusterSecretStore.GVK, + ...toJson_ClusterSecretStoreProps(props), + }; + } + + /** + * Defines a "ClusterSecretStore" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: ClusterSecretStoreProps = {}) { + super(scope, id, { + ...ClusterSecretStore.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...ClusterSecretStore.GVK, + ...toJson_ClusterSecretStoreProps(resolved), + }; + } +} + +/** + * ClusterSecretStore represents a secure external location for storing secrets, which can be referenced as part of `storeRef` fields. + * + * @schema ClusterSecretStore + */ +export interface ClusterSecretStoreProps { + /** + * @schema ClusterSecretStore#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * SecretStoreSpec defines the desired state of SecretStore. + * + * @schema ClusterSecretStore#spec + */ + readonly spec?: ClusterSecretStoreSpec; + +} + +/** + * Converts an object of type 'ClusterSecretStoreProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreProps(obj: ClusterSecretStoreProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_ClusterSecretStoreSpec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretStoreSpec defines the desired state of SecretStore. + * + * @schema ClusterSecretStoreSpec + */ +export interface ClusterSecretStoreSpec { + /** + * Used to select the correct ESO controller (think: ingress.ingressClassName) + * The ESO controller is instantiated with a specific controller name and filters ES based on this property + * + * @schema ClusterSecretStoreSpec#controller + */ + readonly controller?: string; + + /** + * Used to configure the provider. Only one provider may be set + * + * @schema ClusterSecretStoreSpec#provider + */ + readonly provider: ClusterSecretStoreSpecProvider; + + /** + * Used to configure http retries if failed + * + * @schema ClusterSecretStoreSpec#retrySettings + */ + readonly retrySettings?: ClusterSecretStoreSpecRetrySettings; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpec(obj: ClusterSecretStoreSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'controller': obj.controller, + 'provider': toJson_ClusterSecretStoreSpecProvider(obj.provider), + 'retrySettings': toJson_ClusterSecretStoreSpecRetrySettings(obj.retrySettings), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to configure the provider. Only one provider may be set + * + * @schema ClusterSecretStoreSpecProvider + */ +export interface ClusterSecretStoreSpecProvider { + /** + * Akeyless configures this store to sync secrets using Akeyless Vault provider + * + * @schema ClusterSecretStoreSpecProvider#akeyless + */ + readonly akeyless?: ClusterSecretStoreSpecProviderAkeyless; + + /** + * Alibaba configures this store to sync secrets using Alibaba Cloud provider + * + * @schema ClusterSecretStoreSpecProvider#alibaba + */ + readonly alibaba?: ClusterSecretStoreSpecProviderAlibaba; + + /** + * AWS configures this store to sync secrets using AWS Secret Manager provider + * + * @schema ClusterSecretStoreSpecProvider#aws + */ + readonly aws?: ClusterSecretStoreSpecProviderAws; + + /** + * AzureKV configures this store to sync secrets using Azure Key Vault provider + * + * @schema ClusterSecretStoreSpecProvider#azurekv + */ + readonly azurekv?: ClusterSecretStoreSpecProviderAzurekv; + + /** + * Fake configures a store with static key/value pairs + * + * @schema ClusterSecretStoreSpecProvider#fake + */ + readonly fake?: ClusterSecretStoreSpecProviderFake; + + /** + * GCPSM configures this store to sync secrets using Google Cloud Platform Secret Manager provider + * + * @schema ClusterSecretStoreSpecProvider#gcpsm + */ + readonly gcpsm?: ClusterSecretStoreSpecProviderGcpsm; + + /** + * GitLab configures this store to sync secrets using GitLab Variables provider + * + * @schema ClusterSecretStoreSpecProvider#gitlab + */ + readonly gitlab?: ClusterSecretStoreSpecProviderGitlab; + + /** + * IBM configures this store to sync secrets using IBM Cloud provider + * + * @schema ClusterSecretStoreSpecProvider#ibm + */ + readonly ibm?: ClusterSecretStoreSpecProviderIbm; + + /** + * Kubernetes configures this store to sync secrets using a Kubernetes cluster provider + * + * @schema ClusterSecretStoreSpecProvider#kubernetes + */ + readonly kubernetes?: ClusterSecretStoreSpecProviderKubernetes; + + /** + * Oracle configures this store to sync secrets using Oracle Vault provider + * + * @schema ClusterSecretStoreSpecProvider#oracle + */ + readonly oracle?: ClusterSecretStoreSpecProviderOracle; + + /** + * Configures a store to sync secrets with a Password Depot instance. + * + * @schema ClusterSecretStoreSpecProvider#passworddepot + */ + readonly passworddepot?: ClusterSecretStoreSpecProviderPassworddepot; + + /** + * Vault configures this store to sync secrets using Hashi provider + * + * @schema ClusterSecretStoreSpecProvider#vault + */ + readonly vault?: ClusterSecretStoreSpecProviderVault; + + /** + * Webhook configures this store to sync secrets using a generic templated webhook + * + * @schema ClusterSecretStoreSpecProvider#webhook + */ + readonly webhook?: ClusterSecretStoreSpecProviderWebhook; + + /** + * YandexLockbox configures this store to sync secrets using Yandex Lockbox provider + * + * @schema ClusterSecretStoreSpecProvider#yandexlockbox + */ + readonly yandexlockbox?: ClusterSecretStoreSpecProviderYandexlockbox; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProvider(obj: ClusterSecretStoreSpecProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'akeyless': toJson_ClusterSecretStoreSpecProviderAkeyless(obj.akeyless), + 'alibaba': toJson_ClusterSecretStoreSpecProviderAlibaba(obj.alibaba), + 'aws': toJson_ClusterSecretStoreSpecProviderAws(obj.aws), + 'azurekv': toJson_ClusterSecretStoreSpecProviderAzurekv(obj.azurekv), + 'fake': toJson_ClusterSecretStoreSpecProviderFake(obj.fake), + 'gcpsm': toJson_ClusterSecretStoreSpecProviderGcpsm(obj.gcpsm), + 'gitlab': toJson_ClusterSecretStoreSpecProviderGitlab(obj.gitlab), + 'ibm': toJson_ClusterSecretStoreSpecProviderIbm(obj.ibm), + 'kubernetes': toJson_ClusterSecretStoreSpecProviderKubernetes(obj.kubernetes), + 'oracle': toJson_ClusterSecretStoreSpecProviderOracle(obj.oracle), + 'passworddepot': toJson_ClusterSecretStoreSpecProviderPassworddepot(obj.passworddepot), + 'vault': toJson_ClusterSecretStoreSpecProviderVault(obj.vault), + 'webhook': toJson_ClusterSecretStoreSpecProviderWebhook(obj.webhook), + 'yandexlockbox': toJson_ClusterSecretStoreSpecProviderYandexlockbox(obj.yandexlockbox), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to configure http retries if failed + * + * @schema ClusterSecretStoreSpecRetrySettings + */ +export interface ClusterSecretStoreSpecRetrySettings { + /** + * @schema ClusterSecretStoreSpecRetrySettings#maxRetries + */ + readonly maxRetries?: number; + + /** + * @schema ClusterSecretStoreSpecRetrySettings#retryInterval + */ + readonly retryInterval?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecRetrySettings' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecRetrySettings(obj: ClusterSecretStoreSpecRetrySettings | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'maxRetries': obj.maxRetries, + 'retryInterval': obj.retryInterval, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Akeyless configures this store to sync secrets using Akeyless Vault provider + * + * @schema ClusterSecretStoreSpecProviderAkeyless + */ +export interface ClusterSecretStoreSpecProviderAkeyless { + /** + * Akeyless GW API Url from which the secrets to be fetched from. + * + * @schema ClusterSecretStoreSpecProviderAkeyless#akeylessGWApiURL + */ + readonly akeylessGwApiUrl: string; + + /** + * Auth configures how the operator authenticates with Akeyless. + * + * @schema ClusterSecretStoreSpecProviderAkeyless#authSecretRef + */ + readonly authSecretRef: ClusterSecretStoreSpecProviderAkeylessAuthSecretRef; + + /** + * PEM/base64 encoded CA bundle used to validate Akeyless Gateway certificate. Only used + * if the AkeylessGWApiURL URL is using HTTPS protocol. If not set the system root certificates + * are used to validate the TLS connection. + * + * @schema ClusterSecretStoreSpecProviderAkeyless#caBundle + */ + readonly caBundle?: string; + + /** + * The provider for the CA bundle to use to validate Akeyless Gateway certificate. + * + * @schema ClusterSecretStoreSpecProviderAkeyless#caProvider + */ + readonly caProvider?: ClusterSecretStoreSpecProviderAkeylessCaProvider; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAkeyless' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAkeyless(obj: ClusterSecretStoreSpecProviderAkeyless | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'akeylessGWApiURL': obj.akeylessGwApiUrl, + 'authSecretRef': toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRef(obj.authSecretRef), + 'caBundle': obj.caBundle, + 'caProvider': toJson_ClusterSecretStoreSpecProviderAkeylessCaProvider(obj.caProvider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Alibaba configures this store to sync secrets using Alibaba Cloud provider + * + * @schema ClusterSecretStoreSpecProviderAlibaba + */ +export interface ClusterSecretStoreSpecProviderAlibaba { + /** + * AlibabaAuth contains a secretRef for credentials. + * + * @schema ClusterSecretStoreSpecProviderAlibaba#auth + */ + readonly auth: ClusterSecretStoreSpecProviderAlibabaAuth; + + /** + * Alibaba Region to be used for the provider + * + * @schema ClusterSecretStoreSpecProviderAlibaba#regionID + */ + readonly regionId: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAlibaba' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAlibaba(obj: ClusterSecretStoreSpecProviderAlibaba | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreSpecProviderAlibabaAuth(obj.auth), + 'regionID': obj.regionId, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AWS configures this store to sync secrets using AWS Secret Manager provider + * + * @schema ClusterSecretStoreSpecProviderAws + */ +export interface ClusterSecretStoreSpecProviderAws { + /** + * Auth defines the information necessary to authenticate against AWS + * if not set aws sdk will infer credentials from your environment + * see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials + * + * @schema ClusterSecretStoreSpecProviderAws#auth + */ + readonly auth?: ClusterSecretStoreSpecProviderAwsAuth; + + /** + * AWS Region to be used for the provider + * + * @schema ClusterSecretStoreSpecProviderAws#region + */ + readonly region: string; + + /** + * Role is a Role ARN which the SecretManager provider will assume + * + * @schema ClusterSecretStoreSpecProviderAws#role + */ + readonly role?: string; + + /** + * Service defines which service should be used to fetch the secrets + * + * @schema ClusterSecretStoreSpecProviderAws#service + */ + readonly service: ClusterSecretStoreSpecProviderAwsService; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAws' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAws(obj: ClusterSecretStoreSpecProviderAws | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreSpecProviderAwsAuth(obj.auth), + 'region': obj.region, + 'role': obj.role, + 'service': obj.service, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AzureKV configures this store to sync secrets using Azure Key Vault provider + * + * @schema ClusterSecretStoreSpecProviderAzurekv + */ +export interface ClusterSecretStoreSpecProviderAzurekv { + /** + * Auth configures how the operator authenticates with Azure. Required for ServicePrincipal auth type. + * + * @schema ClusterSecretStoreSpecProviderAzurekv#authSecretRef + */ + readonly authSecretRef?: ClusterSecretStoreSpecProviderAzurekvAuthSecretRef; + + /** + * Auth type defines how to authenticate to the keyvault service. + * Valid values are: + * - "ServicePrincipal" (default): Using a service principal (tenantId, clientId, clientSecret) + * - "ManagedIdentity": Using Managed Identity assigned to the pod (see aad-pod-identity) + * + * @schema ClusterSecretStoreSpecProviderAzurekv#authType + */ + readonly authType?: ClusterSecretStoreSpecProviderAzurekvAuthType; + + /** + * If multiple Managed Identity is assigned to the pod, you can select the one to be used + * + * @schema ClusterSecretStoreSpecProviderAzurekv#identityId + */ + readonly identityId?: string; + + /** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema ClusterSecretStoreSpecProviderAzurekv#serviceAccountRef + */ + readonly serviceAccountRef?: ClusterSecretStoreSpecProviderAzurekvServiceAccountRef; + + /** + * TenantID configures the Azure Tenant to send requests to. Required for ServicePrincipal auth type. + * + * @schema ClusterSecretStoreSpecProviderAzurekv#tenantId + */ + readonly tenantId?: string; + + /** + * Vault Url from which the secrets to be fetched from. + * + * @schema ClusterSecretStoreSpecProviderAzurekv#vaultUrl + */ + readonly vaultUrl: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAzurekv' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAzurekv(obj: ClusterSecretStoreSpecProviderAzurekv | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'authSecretRef': toJson_ClusterSecretStoreSpecProviderAzurekvAuthSecretRef(obj.authSecretRef), + 'authType': obj.authType, + 'identityId': obj.identityId, + 'serviceAccountRef': toJson_ClusterSecretStoreSpecProviderAzurekvServiceAccountRef(obj.serviceAccountRef), + 'tenantId': obj.tenantId, + 'vaultUrl': obj.vaultUrl, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Fake configures a store with static key/value pairs + * + * @schema ClusterSecretStoreSpecProviderFake + */ +export interface ClusterSecretStoreSpecProviderFake { + /** + * @schema ClusterSecretStoreSpecProviderFake#data + */ + readonly data: ClusterSecretStoreSpecProviderFakeData[]; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderFake' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderFake(obj: ClusterSecretStoreSpecProviderFake | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'data': obj.data?.map(y => toJson_ClusterSecretStoreSpecProviderFakeData(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * GCPSM configures this store to sync secrets using Google Cloud Platform Secret Manager provider + * + * @schema ClusterSecretStoreSpecProviderGcpsm + */ +export interface ClusterSecretStoreSpecProviderGcpsm { + /** + * Auth defines the information necessary to authenticate against GCP + * + * @schema ClusterSecretStoreSpecProviderGcpsm#auth + */ + readonly auth?: ClusterSecretStoreSpecProviderGcpsmAuth; + + /** + * ProjectID project where secret is located + * + * @schema ClusterSecretStoreSpecProviderGcpsm#projectID + */ + readonly projectId?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderGcpsm' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderGcpsm(obj: ClusterSecretStoreSpecProviderGcpsm | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreSpecProviderGcpsmAuth(obj.auth), + 'projectID': obj.projectId, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * GitLab configures this store to sync secrets using GitLab Variables provider + * + * @schema ClusterSecretStoreSpecProviderGitlab + */ +export interface ClusterSecretStoreSpecProviderGitlab { + /** + * Auth configures how secret-manager authenticates with a GitLab instance. + * + * @schema ClusterSecretStoreSpecProviderGitlab#auth + */ + readonly auth: ClusterSecretStoreSpecProviderGitlabAuth; + + /** + * ProjectID specifies a project where secrets are located. + * + * @schema ClusterSecretStoreSpecProviderGitlab#projectID + */ + readonly projectId?: string; + + /** + * URL configures the GitLab instance URL. Defaults to https://gitlab.com/. + * + * @default https://gitlab.com/. + * @schema ClusterSecretStoreSpecProviderGitlab#url + */ + readonly url?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderGitlab' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderGitlab(obj: ClusterSecretStoreSpecProviderGitlab | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreSpecProviderGitlabAuth(obj.auth), + 'projectID': obj.projectId, + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * IBM configures this store to sync secrets using IBM Cloud provider + * + * @schema ClusterSecretStoreSpecProviderIbm + */ +export interface ClusterSecretStoreSpecProviderIbm { + /** + * Auth configures how secret-manager authenticates with the IBM secrets manager. + * + * @schema ClusterSecretStoreSpecProviderIbm#auth + */ + readonly auth: ClusterSecretStoreSpecProviderIbmAuth; + + /** + * ServiceURL is the Endpoint URL that is specific to the Secrets Manager service instance + * + * @schema ClusterSecretStoreSpecProviderIbm#serviceUrl + */ + readonly serviceUrl?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderIbm' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderIbm(obj: ClusterSecretStoreSpecProviderIbm | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreSpecProviderIbmAuth(obj.auth), + 'serviceUrl': obj.serviceUrl, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Kubernetes configures this store to sync secrets using a Kubernetes cluster provider + * + * @schema ClusterSecretStoreSpecProviderKubernetes + */ +export interface ClusterSecretStoreSpecProviderKubernetes { + /** + * Auth configures how secret-manager authenticates with a Kubernetes instance. + * + * @schema ClusterSecretStoreSpecProviderKubernetes#auth + */ + readonly auth: ClusterSecretStoreSpecProviderKubernetesAuth; + + /** + * Remote namespace to fetch the secrets from + * + * @schema ClusterSecretStoreSpecProviderKubernetes#remoteNamespace + */ + readonly remoteNamespace?: string; + + /** + * configures the Kubernetes server Address. + * + * @schema ClusterSecretStoreSpecProviderKubernetes#server + */ + readonly server?: ClusterSecretStoreSpecProviderKubernetesServer; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderKubernetes' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderKubernetes(obj: ClusterSecretStoreSpecProviderKubernetes | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreSpecProviderKubernetesAuth(obj.auth), + 'remoteNamespace': obj.remoteNamespace, + 'server': toJson_ClusterSecretStoreSpecProviderKubernetesServer(obj.server), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Oracle configures this store to sync secrets using Oracle Vault provider + * + * @schema ClusterSecretStoreSpecProviderOracle + */ +export interface ClusterSecretStoreSpecProviderOracle { + /** + * Auth configures how secret-manager authenticates with the Oracle Vault. + * If empty, instance principal is used. Optionally, the authenticating principal type + * and/or user data may be supplied for the use of workload identity and user principal. + * + * @schema ClusterSecretStoreSpecProviderOracle#auth + */ + readonly auth?: ClusterSecretStoreSpecProviderOracleAuth; + + /** + * Compartment is the vault compartment OCID. + * Required for PushSecret + * + * @schema ClusterSecretStoreSpecProviderOracle#compartment + */ + readonly compartment?: string; + + /** + * EncryptionKey is the OCID of the encryption key within the vault. + * Required for PushSecret + * + * @schema ClusterSecretStoreSpecProviderOracle#encryptionKey + */ + readonly encryptionKey?: string; + + /** + * The type of principal to use for authentication. If left blank, the Auth struct will + * determine the principal type. This optional field must be specified if using + * workload identity. + * + * @schema ClusterSecretStoreSpecProviderOracle#principalType + */ + readonly principalType?: ClusterSecretStoreSpecProviderOraclePrincipalType; + + /** + * Region is the region where vault is located. + * + * @schema ClusterSecretStoreSpecProviderOracle#region + */ + readonly region: string; + + /** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema ClusterSecretStoreSpecProviderOracle#serviceAccountRef + */ + readonly serviceAccountRef?: ClusterSecretStoreSpecProviderOracleServiceAccountRef; + + /** + * Vault is the vault's OCID of the specific vault where secret is located. + * + * @schema ClusterSecretStoreSpecProviderOracle#vault + */ + readonly vault: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderOracle' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderOracle(obj: ClusterSecretStoreSpecProviderOracle | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreSpecProviderOracleAuth(obj.auth), + 'compartment': obj.compartment, + 'encryptionKey': obj.encryptionKey, + 'principalType': obj.principalType, + 'region': obj.region, + 'serviceAccountRef': toJson_ClusterSecretStoreSpecProviderOracleServiceAccountRef(obj.serviceAccountRef), + 'vault': obj.vault, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Configures a store to sync secrets with a Password Depot instance. + * + * @schema ClusterSecretStoreSpecProviderPassworddepot + */ +export interface ClusterSecretStoreSpecProviderPassworddepot { + /** + * Auth configures how secret-manager authenticates with a Password Depot instance. + * + * @schema ClusterSecretStoreSpecProviderPassworddepot#auth + */ + readonly auth: ClusterSecretStoreSpecProviderPassworddepotAuth; + + /** + * Database to use as source + * + * @schema ClusterSecretStoreSpecProviderPassworddepot#database + */ + readonly database: string; + + /** + * URL configures the Password Depot instance URL. + * + * @schema ClusterSecretStoreSpecProviderPassworddepot#host + */ + readonly host: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderPassworddepot' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderPassworddepot(obj: ClusterSecretStoreSpecProviderPassworddepot | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreSpecProviderPassworddepotAuth(obj.auth), + 'database': obj.database, + 'host': obj.host, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Vault configures this store to sync secrets using Hashi provider + * + * @schema ClusterSecretStoreSpecProviderVault + */ +export interface ClusterSecretStoreSpecProviderVault { + /** + * Auth configures how secret-manager authenticates with the Vault server. + * + * @schema ClusterSecretStoreSpecProviderVault#auth + */ + readonly auth: ClusterSecretStoreSpecProviderVaultAuth; + + /** + * PEM encoded CA bundle used to validate Vault server certificate. Only used + * if the Server URL is using HTTPS protocol. This parameter is ignored for + * plain HTTP protocol connection. If not set the system root certificates + * are used to validate the TLS connection. + * + * @schema ClusterSecretStoreSpecProviderVault#caBundle + */ + readonly caBundle?: string; + + /** + * The provider for the CA bundle to use to validate Vault server certificate. + * + * @schema ClusterSecretStoreSpecProviderVault#caProvider + */ + readonly caProvider?: ClusterSecretStoreSpecProviderVaultCaProvider; + + /** + * ForwardInconsistent tells Vault to forward read-after-write requests to the Vault + * leader instead of simply retrying within a loop. This can increase performance if + * the option is enabled serverside. + * https://www.vaultproject.io/docs/configuration/replication#allow_forwarding_via_header + * + * @schema ClusterSecretStoreSpecProviderVault#forwardInconsistent + */ + readonly forwardInconsistent?: boolean; + + /** + * Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows + * Vault environments to support Secure Multi-tenancy. e.g: "ns1". + * More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces + * + * @schema ClusterSecretStoreSpecProviderVault#namespace + */ + readonly namespace?: string; + + /** + * Path is the mount path of the Vault KV backend endpoint, e.g: + * "secret". The v2 KV secret engine version specific "/data" path suffix + * for fetching secrets from Vault is optional and will be appended + * if not present in specified path. + * + * @schema ClusterSecretStoreSpecProviderVault#path + */ + readonly path?: string; + + /** + * ReadYourWrites ensures isolated read-after-write semantics by + * providing discovered cluster replication states in each request. + * More information about eventual consistency in Vault can be found here + * https://www.vaultproject.io/docs/enterprise/consistency + * + * @schema ClusterSecretStoreSpecProviderVault#readYourWrites + */ + readonly readYourWrites?: boolean; + + /** + * Server is the connection address for the Vault server, e.g: "https://vault.example.com:8200". + * + * @schema ClusterSecretStoreSpecProviderVault#server + */ + readonly server: string; + + /** + * Version is the Vault KV secret engine version. This can be either "v1" or + * "v2". Version defaults to "v2". + * + * @schema ClusterSecretStoreSpecProviderVault#version + */ + readonly version?: ClusterSecretStoreSpecProviderVaultVersion; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVault' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVault(obj: ClusterSecretStoreSpecProviderVault | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreSpecProviderVaultAuth(obj.auth), + 'caBundle': obj.caBundle, + 'caProvider': toJson_ClusterSecretStoreSpecProviderVaultCaProvider(obj.caProvider), + 'forwardInconsistent': obj.forwardInconsistent, + 'namespace': obj.namespace, + 'path': obj.path, + 'readYourWrites': obj.readYourWrites, + 'server': obj.server, + 'version': obj.version, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Webhook configures this store to sync secrets using a generic templated webhook + * + * @schema ClusterSecretStoreSpecProviderWebhook + */ +export interface ClusterSecretStoreSpecProviderWebhook { + /** + * Body + * + * @schema ClusterSecretStoreSpecProviderWebhook#body + */ + readonly body?: string; + + /** + * PEM encoded CA bundle used to validate webhook server certificate. Only used + * if the Server URL is using HTTPS protocol. This parameter is ignored for + * plain HTTP protocol connection. If not set the system root certificates + * are used to validate the TLS connection. + * + * @schema ClusterSecretStoreSpecProviderWebhook#caBundle + */ + readonly caBundle?: string; + + /** + * The provider for the CA bundle to use to validate webhook server certificate. + * + * @schema ClusterSecretStoreSpecProviderWebhook#caProvider + */ + readonly caProvider?: ClusterSecretStoreSpecProviderWebhookCaProvider; + + /** + * Headers + * + * @schema ClusterSecretStoreSpecProviderWebhook#headers + */ + readonly headers?: { [key: string]: string }; + + /** + * Webhook Method + * + * @schema ClusterSecretStoreSpecProviderWebhook#method + */ + readonly method?: string; + + /** + * Result formatting + * + * @schema ClusterSecretStoreSpecProviderWebhook#result + */ + readonly result: ClusterSecretStoreSpecProviderWebhookResult; + + /** + * Secrets to fill in templates + * These secrets will be passed to the templating function as key value pairs under the given name + * + * @schema ClusterSecretStoreSpecProviderWebhook#secrets + */ + readonly secrets?: ClusterSecretStoreSpecProviderWebhookSecrets[]; + + /** + * Timeout + * + * @schema ClusterSecretStoreSpecProviderWebhook#timeout + */ + readonly timeout?: string; + + /** + * Webhook url to call + * + * @schema ClusterSecretStoreSpecProviderWebhook#url + */ + readonly url: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderWebhook' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderWebhook(obj: ClusterSecretStoreSpecProviderWebhook | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'body': obj.body, + 'caBundle': obj.caBundle, + 'caProvider': toJson_ClusterSecretStoreSpecProviderWebhookCaProvider(obj.caProvider), + 'headers': ((obj.headers) === undefined) ? undefined : (Object.entries(obj.headers).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'method': obj.method, + 'result': toJson_ClusterSecretStoreSpecProviderWebhookResult(obj.result), + 'secrets': obj.secrets?.map(y => toJson_ClusterSecretStoreSpecProviderWebhookSecrets(y)), + 'timeout': obj.timeout, + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * YandexLockbox configures this store to sync secrets using Yandex Lockbox provider + * + * @schema ClusterSecretStoreSpecProviderYandexlockbox + */ +export interface ClusterSecretStoreSpecProviderYandexlockbox { + /** + * Yandex.Cloud API endpoint (e.g. 'api.cloud.yandex.net:443') + * + * @schema ClusterSecretStoreSpecProviderYandexlockbox#apiEndpoint + */ + readonly apiEndpoint?: string; + + /** + * Auth defines the information necessary to authenticate against Yandex Lockbox + * + * @schema ClusterSecretStoreSpecProviderYandexlockbox#auth + */ + readonly auth: ClusterSecretStoreSpecProviderYandexlockboxAuth; + + /** + * The provider for the CA bundle to use to validate Yandex.Cloud server certificate. + * + * @schema ClusterSecretStoreSpecProviderYandexlockbox#caProvider + */ + readonly caProvider?: ClusterSecretStoreSpecProviderYandexlockboxCaProvider; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderYandexlockbox' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderYandexlockbox(obj: ClusterSecretStoreSpecProviderYandexlockbox | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiEndpoint': obj.apiEndpoint, + 'auth': toJson_ClusterSecretStoreSpecProviderYandexlockboxAuth(obj.auth), + 'caProvider': toJson_ClusterSecretStoreSpecProviderYandexlockboxCaProvider(obj.caProvider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how the operator authenticates with Akeyless. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRef + */ +export interface ClusterSecretStoreSpecProviderAkeylessAuthSecretRef { + /** + * Kubernetes authenticates with Akeyless by passing the ServiceAccount + * token stored in the named Secret resource. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRef#kubernetesAuth + */ + readonly kubernetesAuth?: ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth; + + /** + * Reference to a Secret that contains the details + * to authenticate with Akeyless. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRef#secretRef + */ + readonly secretRef?: ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAkeylessAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRef(obj: ClusterSecretStoreSpecProviderAkeylessAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kubernetesAuth': toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth(obj.kubernetesAuth), + 'secretRef': toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate Akeyless Gateway certificate. + * + * @schema ClusterSecretStoreSpecProviderAkeylessCaProvider + */ +export interface ClusterSecretStoreSpecProviderAkeylessCaProvider { + /** + * The key the value inside of the provider type to use, only used with "Secret" type + * + * @schema ClusterSecretStoreSpecProviderAkeylessCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema ClusterSecretStoreSpecProviderAkeylessCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * + * @schema ClusterSecretStoreSpecProviderAkeylessCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreSpecProviderAkeylessCaProvider#type + */ + readonly type: ClusterSecretStoreSpecProviderAkeylessCaProviderType; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAkeylessCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAkeylessCaProvider(obj: ClusterSecretStoreSpecProviderAkeylessCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AlibabaAuth contains a secretRef for credentials. + * + * @schema ClusterSecretStoreSpecProviderAlibabaAuth + */ +export interface ClusterSecretStoreSpecProviderAlibabaAuth { + /** + * Authenticate against Alibaba using RRSA. + * + * @schema ClusterSecretStoreSpecProviderAlibabaAuth#rrsa + */ + readonly rrsa?: ClusterSecretStoreSpecProviderAlibabaAuthRrsa; + + /** + * AlibabaAuthSecretRef holds secret references for Alibaba credentials. + * + * @schema ClusterSecretStoreSpecProviderAlibabaAuth#secretRef + */ + readonly secretRef?: ClusterSecretStoreSpecProviderAlibabaAuthSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAlibabaAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAlibabaAuth(obj: ClusterSecretStoreSpecProviderAlibabaAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'rrsa': toJson_ClusterSecretStoreSpecProviderAlibabaAuthRrsa(obj.rrsa), + 'secretRef': toJson_ClusterSecretStoreSpecProviderAlibabaAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against AWS + * if not set aws sdk will infer credentials from your environment + * see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials + * + * @schema ClusterSecretStoreSpecProviderAwsAuth + */ +export interface ClusterSecretStoreSpecProviderAwsAuth { + /** + * Authenticate against AWS using service account tokens. + * + * @schema ClusterSecretStoreSpecProviderAwsAuth#jwt + */ + readonly jwt?: ClusterSecretStoreSpecProviderAwsAuthJwt; + + /** + * AWSAuthSecretRef holds secret references for AWS credentials + * both AccessKeyID and SecretAccessKey must be defined in order to properly authenticate. + * + * @schema ClusterSecretStoreSpecProviderAwsAuth#secretRef + */ + readonly secretRef?: ClusterSecretStoreSpecProviderAwsAuthSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAwsAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAwsAuth(obj: ClusterSecretStoreSpecProviderAwsAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'jwt': toJson_ClusterSecretStoreSpecProviderAwsAuthJwt(obj.jwt), + 'secretRef': toJson_ClusterSecretStoreSpecProviderAwsAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Service defines which service should be used to fetch the secrets + * + * @schema ClusterSecretStoreSpecProviderAwsService + */ +export enum ClusterSecretStoreSpecProviderAwsService { + /** SecretsManager */ + SECRETS_MANAGER = "SecretsManager", + /** ParameterStore */ + PARAMETER_STORE = "ParameterStore", +} + +/** + * Auth configures how the operator authenticates with Azure. Required for ServicePrincipal auth type. + * + * @schema ClusterSecretStoreSpecProviderAzurekvAuthSecretRef + */ +export interface ClusterSecretStoreSpecProviderAzurekvAuthSecretRef { + /** + * The Azure clientId of the service principle used for authentication. + * + * @schema ClusterSecretStoreSpecProviderAzurekvAuthSecretRef#clientId + */ + readonly clientId?: ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientId; + + /** + * The Azure ClientSecret of the service principle used for authentication. + * + * @schema ClusterSecretStoreSpecProviderAzurekvAuthSecretRef#clientSecret + */ + readonly clientSecret?: ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientSecret; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAzurekvAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAzurekvAuthSecretRef(obj: ClusterSecretStoreSpecProviderAzurekvAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientId': toJson_ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientId(obj.clientId), + 'clientSecret': toJson_ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientSecret(obj.clientSecret), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth type defines how to authenticate to the keyvault service. + * Valid values are: + * - "ServicePrincipal" (default): Using a service principal (tenantId, clientId, clientSecret) + * - "ManagedIdentity": Using Managed Identity assigned to the pod (see aad-pod-identity) + * + * @schema ClusterSecretStoreSpecProviderAzurekvAuthType + */ +export enum ClusterSecretStoreSpecProviderAzurekvAuthType { + /** ServicePrincipal */ + SERVICE_PRINCIPAL = "ServicePrincipal", + /** ManagedIdentity */ + MANAGED_IDENTITY = "ManagedIdentity", + /** WorkloadIdentity */ + WORKLOAD_IDENTITY = "WorkloadIdentity", +} + +/** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema ClusterSecretStoreSpecProviderAzurekvServiceAccountRef + */ +export interface ClusterSecretStoreSpecProviderAzurekvServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreSpecProviderAzurekvServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderAzurekvServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderAzurekvServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAzurekvServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAzurekvServiceAccountRef(obj: ClusterSecretStoreSpecProviderAzurekvServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreSpecProviderFakeData + */ +export interface ClusterSecretStoreSpecProviderFakeData { + /** + * @schema ClusterSecretStoreSpecProviderFakeData#key + */ + readonly key: string; + + /** + * @schema ClusterSecretStoreSpecProviderFakeData#value + */ + readonly value?: string; + + /** + * @schema ClusterSecretStoreSpecProviderFakeData#valueMap + */ + readonly valueMap?: { [key: string]: string }; + + /** + * @schema ClusterSecretStoreSpecProviderFakeData#version + */ + readonly version?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderFakeData' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderFakeData(obj: ClusterSecretStoreSpecProviderFakeData | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'value': obj.value, + 'valueMap': ((obj.valueMap) === undefined) ? undefined : (Object.entries(obj.valueMap).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'version': obj.version, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against GCP + * + * @schema ClusterSecretStoreSpecProviderGcpsmAuth + */ +export interface ClusterSecretStoreSpecProviderGcpsmAuth { + /** + * @schema ClusterSecretStoreSpecProviderGcpsmAuth#secretRef + */ + readonly secretRef?: ClusterSecretStoreSpecProviderGcpsmAuthSecretRef; + + /** + * @schema ClusterSecretStoreSpecProviderGcpsmAuth#workloadIdentity + */ + readonly workloadIdentity?: ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentity; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderGcpsmAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderGcpsmAuth(obj: ClusterSecretStoreSpecProviderGcpsmAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreSpecProviderGcpsmAuthSecretRef(obj.secretRef), + 'workloadIdentity': toJson_ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentity(obj.workloadIdentity), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with a GitLab instance. + * + * @schema ClusterSecretStoreSpecProviderGitlabAuth + */ +export interface ClusterSecretStoreSpecProviderGitlabAuth { + /** + * @schema ClusterSecretStoreSpecProviderGitlabAuth#SecretRef + */ + readonly secretRef: ClusterSecretStoreSpecProviderGitlabAuthSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderGitlabAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderGitlabAuth(obj: ClusterSecretStoreSpecProviderGitlabAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'SecretRef': toJson_ClusterSecretStoreSpecProviderGitlabAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with the IBM secrets manager. + * + * @schema ClusterSecretStoreSpecProviderIbmAuth + */ +export interface ClusterSecretStoreSpecProviderIbmAuth { + /** + * @schema ClusterSecretStoreSpecProviderIbmAuth#secretRef + */ + readonly secretRef: ClusterSecretStoreSpecProviderIbmAuthSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderIbmAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderIbmAuth(obj: ClusterSecretStoreSpecProviderIbmAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreSpecProviderIbmAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with a Kubernetes instance. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuth + */ +export interface ClusterSecretStoreSpecProviderKubernetesAuth { + /** + * has both clientCert and clientKey as secretKeySelector + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuth#cert + */ + readonly cert?: ClusterSecretStoreSpecProviderKubernetesAuthCert; + + /** + * points to a service account that should be used for authentication + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuth#serviceAccount + */ + readonly serviceAccount?: ClusterSecretStoreSpecProviderKubernetesAuthServiceAccount; + + /** + * use static token to authenticate with + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuth#token + */ + readonly token?: ClusterSecretStoreSpecProviderKubernetesAuthToken; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderKubernetesAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderKubernetesAuth(obj: ClusterSecretStoreSpecProviderKubernetesAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'cert': toJson_ClusterSecretStoreSpecProviderKubernetesAuthCert(obj.cert), + 'serviceAccount': toJson_ClusterSecretStoreSpecProviderKubernetesAuthServiceAccount(obj.serviceAccount), + 'token': toJson_ClusterSecretStoreSpecProviderKubernetesAuthToken(obj.token), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * configures the Kubernetes server Address. + * + * @schema ClusterSecretStoreSpecProviderKubernetesServer + */ +export interface ClusterSecretStoreSpecProviderKubernetesServer { + /** + * CABundle is a base64-encoded CA certificate + * + * @schema ClusterSecretStoreSpecProviderKubernetesServer#caBundle + */ + readonly caBundle?: string; + + /** + * see: https://external-secrets.io/v0.4.1/spec/#external-secrets.io/v1alpha1.CAProvider + * + * @schema ClusterSecretStoreSpecProviderKubernetesServer#caProvider + */ + readonly caProvider?: ClusterSecretStoreSpecProviderKubernetesServerCaProvider; + + /** + * configures the Kubernetes server Address. + * + * @schema ClusterSecretStoreSpecProviderKubernetesServer#url + */ + readonly url?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderKubernetesServer' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderKubernetesServer(obj: ClusterSecretStoreSpecProviderKubernetesServer | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'caBundle': obj.caBundle, + 'caProvider': toJson_ClusterSecretStoreSpecProviderKubernetesServerCaProvider(obj.caProvider), + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with the Oracle Vault. + * If empty, instance principal is used. Optionally, the authenticating principal type + * and/or user data may be supplied for the use of workload identity and user principal. + * + * @schema ClusterSecretStoreSpecProviderOracleAuth + */ +export interface ClusterSecretStoreSpecProviderOracleAuth { + /** + * SecretRef to pass through sensitive information. + * + * @schema ClusterSecretStoreSpecProviderOracleAuth#secretRef + */ + readonly secretRef: ClusterSecretStoreSpecProviderOracleAuthSecretRef; + + /** + * Tenancy is the tenancy OCID where user is located. + * + * @schema ClusterSecretStoreSpecProviderOracleAuth#tenancy + */ + readonly tenancy: string; + + /** + * User is an access OCID specific to the account. + * + * @schema ClusterSecretStoreSpecProviderOracleAuth#user + */ + readonly user: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderOracleAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderOracleAuth(obj: ClusterSecretStoreSpecProviderOracleAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreSpecProviderOracleAuthSecretRef(obj.secretRef), + 'tenancy': obj.tenancy, + 'user': obj.user, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of principal to use for authentication. If left blank, the Auth struct will + * determine the principal type. This optional field must be specified if using + * workload identity. + * + * @schema ClusterSecretStoreSpecProviderOraclePrincipalType + */ +export enum ClusterSecretStoreSpecProviderOraclePrincipalType { + /** UserPrincipal */ + USER_PRINCIPAL = "UserPrincipal", + /** InstancePrincipal */ + INSTANCE_PRINCIPAL = "InstancePrincipal", + /** Workload */ + WORKLOAD = "Workload", +} + +/** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema ClusterSecretStoreSpecProviderOracleServiceAccountRef + */ +export interface ClusterSecretStoreSpecProviderOracleServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreSpecProviderOracleServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderOracleServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderOracleServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderOracleServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderOracleServiceAccountRef(obj: ClusterSecretStoreSpecProviderOracleServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with a Password Depot instance. + * + * @schema ClusterSecretStoreSpecProviderPassworddepotAuth + */ +export interface ClusterSecretStoreSpecProviderPassworddepotAuth { + /** + * @schema ClusterSecretStoreSpecProviderPassworddepotAuth#secretRef + */ + readonly secretRef: ClusterSecretStoreSpecProviderPassworddepotAuthSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderPassworddepotAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderPassworddepotAuth(obj: ClusterSecretStoreSpecProviderPassworddepotAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreSpecProviderPassworddepotAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with the Vault server. + * + * @schema ClusterSecretStoreSpecProviderVaultAuth + */ +export interface ClusterSecretStoreSpecProviderVaultAuth { + /** + * AppRole authenticates with Vault using the App Role auth mechanism, + * with the role and secret stored in a Kubernetes Secret resource. + * + * @schema ClusterSecretStoreSpecProviderVaultAuth#appRole + */ + readonly appRole?: ClusterSecretStoreSpecProviderVaultAuthAppRole; + + /** + * Cert authenticates with TLS Certificates by passing client certificate, private key and ca certificate + * Cert authentication method + * + * @schema ClusterSecretStoreSpecProviderVaultAuth#cert + */ + readonly cert?: ClusterSecretStoreSpecProviderVaultAuthCert; + + /** + * Jwt authenticates with Vault by passing role and JWT token using the + * JWT/OIDC authentication method + * + * @schema ClusterSecretStoreSpecProviderVaultAuth#jwt + */ + readonly jwt?: ClusterSecretStoreSpecProviderVaultAuthJwt; + + /** + * Kubernetes authenticates with Vault by passing the ServiceAccount + * token stored in the named Secret resource to the Vault server. + * + * @schema ClusterSecretStoreSpecProviderVaultAuth#kubernetes + */ + readonly kubernetes?: ClusterSecretStoreSpecProviderVaultAuthKubernetes; + + /** + * Ldap authenticates with Vault by passing username/password pair using + * the LDAP authentication method + * + * @schema ClusterSecretStoreSpecProviderVaultAuth#ldap + */ + readonly ldap?: ClusterSecretStoreSpecProviderVaultAuthLdap; + + /** + * TokenSecretRef authenticates with Vault by presenting a token. + * + * @schema ClusterSecretStoreSpecProviderVaultAuth#tokenSecretRef + */ + readonly tokenSecretRef?: ClusterSecretStoreSpecProviderVaultAuthTokenSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuth(obj: ClusterSecretStoreSpecProviderVaultAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'appRole': toJson_ClusterSecretStoreSpecProviderVaultAuthAppRole(obj.appRole), + 'cert': toJson_ClusterSecretStoreSpecProviderVaultAuthCert(obj.cert), + 'jwt': toJson_ClusterSecretStoreSpecProviderVaultAuthJwt(obj.jwt), + 'kubernetes': toJson_ClusterSecretStoreSpecProviderVaultAuthKubernetes(obj.kubernetes), + 'ldap': toJson_ClusterSecretStoreSpecProviderVaultAuthLdap(obj.ldap), + 'tokenSecretRef': toJson_ClusterSecretStoreSpecProviderVaultAuthTokenSecretRef(obj.tokenSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate Vault server certificate. + * + * @schema ClusterSecretStoreSpecProviderVaultCaProvider + */ +export interface ClusterSecretStoreSpecProviderVaultCaProvider { + /** + * The key the value inside of the provider type to use, only used with "Secret" type + * + * @schema ClusterSecretStoreSpecProviderVaultCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema ClusterSecretStoreSpecProviderVaultCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * + * @schema ClusterSecretStoreSpecProviderVaultCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreSpecProviderVaultCaProvider#type + */ + readonly type: ClusterSecretStoreSpecProviderVaultCaProviderType; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultCaProvider(obj: ClusterSecretStoreSpecProviderVaultCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Version is the Vault KV secret engine version. This can be either "v1" or + * "v2". Version defaults to "v2". + * + * @schema ClusterSecretStoreSpecProviderVaultVersion + */ +export enum ClusterSecretStoreSpecProviderVaultVersion { + /** v1 */ + V1 = "v1", + /** v2 */ + V2 = "v2", +} + +/** + * The provider for the CA bundle to use to validate webhook server certificate. + * + * @schema ClusterSecretStoreSpecProviderWebhookCaProvider + */ +export interface ClusterSecretStoreSpecProviderWebhookCaProvider { + /** + * The key the value inside of the provider type to use, only used with "Secret" type + * + * @schema ClusterSecretStoreSpecProviderWebhookCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema ClusterSecretStoreSpecProviderWebhookCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * + * @schema ClusterSecretStoreSpecProviderWebhookCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreSpecProviderWebhookCaProvider#type + */ + readonly type: ClusterSecretStoreSpecProviderWebhookCaProviderType; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderWebhookCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderWebhookCaProvider(obj: ClusterSecretStoreSpecProviderWebhookCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Result formatting + * + * @schema ClusterSecretStoreSpecProviderWebhookResult + */ +export interface ClusterSecretStoreSpecProviderWebhookResult { + /** + * Json path of return value + * + * @schema ClusterSecretStoreSpecProviderWebhookResult#jsonPath + */ + readonly jsonPath?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderWebhookResult' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderWebhookResult(obj: ClusterSecretStoreSpecProviderWebhookResult | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'jsonPath': obj.jsonPath, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreSpecProviderWebhookSecrets + */ +export interface ClusterSecretStoreSpecProviderWebhookSecrets { + /** + * Name of this secret in templates + * + * @schema ClusterSecretStoreSpecProviderWebhookSecrets#name + */ + readonly name: string; + + /** + * Secret ref to fill in credentials + * + * @schema ClusterSecretStoreSpecProviderWebhookSecrets#secretRef + */ + readonly secretRef: ClusterSecretStoreSpecProviderWebhookSecretsSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderWebhookSecrets' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderWebhookSecrets(obj: ClusterSecretStoreSpecProviderWebhookSecrets | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'name': obj.name, + 'secretRef': toJson_ClusterSecretStoreSpecProviderWebhookSecretsSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against Yandex Lockbox + * + * @schema ClusterSecretStoreSpecProviderYandexlockboxAuth + */ +export interface ClusterSecretStoreSpecProviderYandexlockboxAuth { + /** + * The authorized key used for authentication + * + * @schema ClusterSecretStoreSpecProviderYandexlockboxAuth#authorizedKeySecretRef + */ + readonly authorizedKeySecretRef?: ClusterSecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderYandexlockboxAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderYandexlockboxAuth(obj: ClusterSecretStoreSpecProviderYandexlockboxAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'authorizedKeySecretRef': toJson_ClusterSecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef(obj.authorizedKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate Yandex.Cloud server certificate. + * + * @schema ClusterSecretStoreSpecProviderYandexlockboxCaProvider + */ +export interface ClusterSecretStoreSpecProviderYandexlockboxCaProvider { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreSpecProviderYandexlockboxCaProvider#certSecretRef + */ + readonly certSecretRef?: ClusterSecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderYandexlockboxCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderYandexlockboxCaProvider(obj: ClusterSecretStoreSpecProviderYandexlockboxCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'certSecretRef': toJson_ClusterSecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef(obj.certSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Kubernetes authenticates with Akeyless by passing the ServiceAccount + * token stored in the named Secret resource. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth + */ +export interface ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth { + /** + * the Akeyless Kubernetes auth-method access-id + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth#accessID + */ + readonly accessId: string; + + /** + * Kubernetes-auth configuration name in Akeyless-Gateway + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth#k8sConfName + */ + readonly k8SConfName: string; + + /** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Akeyless. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth#secretRef + */ + readonly secretRef?: ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef; + + /** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Akeyless. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth#serviceAccountRef + */ + readonly serviceAccountRef?: ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth(obj: ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessID': obj.accessId, + 'k8sConfName': obj.k8SConfName, + 'secretRef': toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef(obj.secretRef), + 'serviceAccountRef': toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Reference to a Secret that contains the details + * to authenticate with Akeyless. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRef + */ +export interface ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRef { + /** + * The SecretAccessID is used for authentication + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRef#accessID + */ + readonly accessId?: ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRef#accessType + */ + readonly accessType?: ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRef#accessTypeParam + */ + readonly accessTypeParam?: ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRef(obj: ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessID': toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId(obj.accessId), + 'accessType': toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType(obj.accessType), + 'accessTypeParam': toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam(obj.accessTypeParam), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreSpecProviderAkeylessCaProviderType + */ +export enum ClusterSecretStoreSpecProviderAkeylessCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * Authenticate against Alibaba using RRSA. + * + * @schema ClusterSecretStoreSpecProviderAlibabaAuthRrsa + */ +export interface ClusterSecretStoreSpecProviderAlibabaAuthRrsa { + /** + * @schema ClusterSecretStoreSpecProviderAlibabaAuthRrsa#oidcProviderArn + */ + readonly oidcProviderArn: string; + + /** + * @schema ClusterSecretStoreSpecProviderAlibabaAuthRrsa#oidcTokenFilePath + */ + readonly oidcTokenFilePath: string; + + /** + * @schema ClusterSecretStoreSpecProviderAlibabaAuthRrsa#roleArn + */ + readonly roleArn: string; + + /** + * @schema ClusterSecretStoreSpecProviderAlibabaAuthRrsa#sessionName + */ + readonly sessionName: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAlibabaAuthRrsa' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAlibabaAuthRrsa(obj: ClusterSecretStoreSpecProviderAlibabaAuthRrsa | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'oidcProviderArn': obj.oidcProviderArn, + 'oidcTokenFilePath': obj.oidcTokenFilePath, + 'roleArn': obj.roleArn, + 'sessionName': obj.sessionName, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AlibabaAuthSecretRef holds secret references for Alibaba credentials. + * + * @schema ClusterSecretStoreSpecProviderAlibabaAuthSecretRef + */ +export interface ClusterSecretStoreSpecProviderAlibabaAuthSecretRef { + /** + * The AccessKeyID is used for authentication + * + * @schema ClusterSecretStoreSpecProviderAlibabaAuthSecretRef#accessKeyIDSecretRef + */ + readonly accessKeyIdSecretRef: ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef; + + /** + * The AccessKeySecret is used for authentication + * + * @schema ClusterSecretStoreSpecProviderAlibabaAuthSecretRef#accessKeySecretSecretRef + */ + readonly accessKeySecretSecretRef: ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAlibabaAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAlibabaAuthSecretRef(obj: ClusterSecretStoreSpecProviderAlibabaAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessKeyIDSecretRef': toJson_ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef(obj.accessKeyIdSecretRef), + 'accessKeySecretSecretRef': toJson_ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef(obj.accessKeySecretSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Authenticate against AWS using service account tokens. + * + * @schema ClusterSecretStoreSpecProviderAwsAuthJwt + */ +export interface ClusterSecretStoreSpecProviderAwsAuthJwt { + /** + * A reference to a ServiceAccount resource. + * + * @schema ClusterSecretStoreSpecProviderAwsAuthJwt#serviceAccountRef + */ + readonly serviceAccountRef?: ClusterSecretStoreSpecProviderAwsAuthJwtServiceAccountRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAwsAuthJwt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAwsAuthJwt(obj: ClusterSecretStoreSpecProviderAwsAuthJwt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'serviceAccountRef': toJson_ClusterSecretStoreSpecProviderAwsAuthJwtServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AWSAuthSecretRef holds secret references for AWS credentials + * both AccessKeyID and SecretAccessKey must be defined in order to properly authenticate. + * + * @schema ClusterSecretStoreSpecProviderAwsAuthSecretRef + */ +export interface ClusterSecretStoreSpecProviderAwsAuthSecretRef { + /** + * The AccessKeyID is used for authentication + * + * @schema ClusterSecretStoreSpecProviderAwsAuthSecretRef#accessKeyIDSecretRef + */ + readonly accessKeyIdSecretRef?: ClusterSecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef; + + /** + * The SecretAccessKey is used for authentication + * + * @schema ClusterSecretStoreSpecProviderAwsAuthSecretRef#secretAccessKeySecretRef + */ + readonly secretAccessKeySecretRef?: ClusterSecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAwsAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAwsAuthSecretRef(obj: ClusterSecretStoreSpecProviderAwsAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessKeyIDSecretRef': toJson_ClusterSecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef(obj.accessKeyIdSecretRef), + 'secretAccessKeySecretRef': toJson_ClusterSecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef(obj.secretAccessKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The Azure clientId of the service principle used for authentication. + * + * @schema ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientId + */ +export interface ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientId { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientId#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientId#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientId#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientId' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientId(obj: ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientId | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The Azure ClientSecret of the service principle used for authentication. + * + * @schema ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientSecret + */ +export interface ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientSecret { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientSecret#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientSecret#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientSecret#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientSecret' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientSecret(obj: ClusterSecretStoreSpecProviderAzurekvAuthSecretRefClientSecret | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreSpecProviderGcpsmAuthSecretRef + */ +export interface ClusterSecretStoreSpecProviderGcpsmAuthSecretRef { + /** + * The SecretAccessKey is used for authentication + * + * @schema ClusterSecretStoreSpecProviderGcpsmAuthSecretRef#secretAccessKeySecretRef + */ + readonly secretAccessKeySecretRef?: ClusterSecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderGcpsmAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderGcpsmAuthSecretRef(obj: ClusterSecretStoreSpecProviderGcpsmAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretAccessKeySecretRef': toJson_ClusterSecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef(obj.secretAccessKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentity + */ +export interface ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentity { + /** + * @schema ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentity#clusterLocation + */ + readonly clusterLocation: string; + + /** + * @schema ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentity#clusterName + */ + readonly clusterName: string; + + /** + * @schema ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentity#clusterProjectID + */ + readonly clusterProjectId?: string; + + /** + * A reference to a ServiceAccount resource. + * + * @schema ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentity#serviceAccountRef + */ + readonly serviceAccountRef: ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentity' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentity(obj: ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentity | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clusterLocation': obj.clusterLocation, + 'clusterName': obj.clusterName, + 'clusterProjectID': obj.clusterProjectId, + 'serviceAccountRef': toJson_ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreSpecProviderGitlabAuthSecretRef + */ +export interface ClusterSecretStoreSpecProviderGitlabAuthSecretRef { + /** + * AccessToken is used for authentication. + * + * @schema ClusterSecretStoreSpecProviderGitlabAuthSecretRef#accessToken + */ + readonly accessToken?: ClusterSecretStoreSpecProviderGitlabAuthSecretRefAccessToken; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderGitlabAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderGitlabAuthSecretRef(obj: ClusterSecretStoreSpecProviderGitlabAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessToken': toJson_ClusterSecretStoreSpecProviderGitlabAuthSecretRefAccessToken(obj.accessToken), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreSpecProviderIbmAuthSecretRef + */ +export interface ClusterSecretStoreSpecProviderIbmAuthSecretRef { + /** + * The SecretAccessKey is used for authentication + * + * @schema ClusterSecretStoreSpecProviderIbmAuthSecretRef#secretApiKeySecretRef + */ + readonly secretApiKeySecretRef?: ClusterSecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderIbmAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderIbmAuthSecretRef(obj: ClusterSecretStoreSpecProviderIbmAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretApiKeySecretRef': toJson_ClusterSecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef(obj.secretApiKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * has both clientCert and clientKey as secretKeySelector + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthCert + */ +export interface ClusterSecretStoreSpecProviderKubernetesAuthCert { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthCert#clientCert + */ + readonly clientCert?: ClusterSecretStoreSpecProviderKubernetesAuthCertClientCert; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthCert#clientKey + */ + readonly clientKey?: ClusterSecretStoreSpecProviderKubernetesAuthCertClientKey; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderKubernetesAuthCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderKubernetesAuthCert(obj: ClusterSecretStoreSpecProviderKubernetesAuthCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientCert': toJson_ClusterSecretStoreSpecProviderKubernetesAuthCertClientCert(obj.clientCert), + 'clientKey': toJson_ClusterSecretStoreSpecProviderKubernetesAuthCertClientKey(obj.clientKey), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * points to a service account that should be used for authentication + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthServiceAccount + */ +export interface ClusterSecretStoreSpecProviderKubernetesAuthServiceAccount { + /** + * A reference to a ServiceAccount resource. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthServiceAccount#serviceAccount + */ + readonly serviceAccount?: ClusterSecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderKubernetesAuthServiceAccount' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderKubernetesAuthServiceAccount(obj: ClusterSecretStoreSpecProviderKubernetesAuthServiceAccount | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'serviceAccount': toJson_ClusterSecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount(obj.serviceAccount), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * use static token to authenticate with + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthToken + */ +export interface ClusterSecretStoreSpecProviderKubernetesAuthToken { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthToken#bearerToken + */ + readonly bearerToken?: ClusterSecretStoreSpecProviderKubernetesAuthTokenBearerToken; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderKubernetesAuthToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderKubernetesAuthToken(obj: ClusterSecretStoreSpecProviderKubernetesAuthToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'bearerToken': toJson_ClusterSecretStoreSpecProviderKubernetesAuthTokenBearerToken(obj.bearerToken), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * see: https://external-secrets.io/v0.4.1/spec/#external-secrets.io/v1alpha1.CAProvider + * + * @schema ClusterSecretStoreSpecProviderKubernetesServerCaProvider + */ +export interface ClusterSecretStoreSpecProviderKubernetesServerCaProvider { + /** + * The key the value inside of the provider type to use, only used with "Secret" type + * + * @schema ClusterSecretStoreSpecProviderKubernetesServerCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema ClusterSecretStoreSpecProviderKubernetesServerCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * + * @schema ClusterSecretStoreSpecProviderKubernetesServerCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreSpecProviderKubernetesServerCaProvider#type + */ + readonly type: ClusterSecretStoreSpecProviderKubernetesServerCaProviderType; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderKubernetesServerCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderKubernetesServerCaProvider(obj: ClusterSecretStoreSpecProviderKubernetesServerCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to pass through sensitive information. + * + * @schema ClusterSecretStoreSpecProviderOracleAuthSecretRef + */ +export interface ClusterSecretStoreSpecProviderOracleAuthSecretRef { + /** + * Fingerprint is the fingerprint of the API private key. + * + * @schema ClusterSecretStoreSpecProviderOracleAuthSecretRef#fingerprint + */ + readonly fingerprint: ClusterSecretStoreSpecProviderOracleAuthSecretRefFingerprint; + + /** + * PrivateKey is the user's API Signing Key in PEM format, used for authentication. + * + * @schema ClusterSecretStoreSpecProviderOracleAuthSecretRef#privatekey + */ + readonly privatekey: ClusterSecretStoreSpecProviderOracleAuthSecretRefPrivatekey; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderOracleAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderOracleAuthSecretRef(obj: ClusterSecretStoreSpecProviderOracleAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'fingerprint': toJson_ClusterSecretStoreSpecProviderOracleAuthSecretRefFingerprint(obj.fingerprint), + 'privatekey': toJson_ClusterSecretStoreSpecProviderOracleAuthSecretRefPrivatekey(obj.privatekey), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreSpecProviderPassworddepotAuthSecretRef + */ +export interface ClusterSecretStoreSpecProviderPassworddepotAuthSecretRef { + /** + * Username / Password is used for authentication. + * + * @schema ClusterSecretStoreSpecProviderPassworddepotAuthSecretRef#credentials + */ + readonly credentials?: ClusterSecretStoreSpecProviderPassworddepotAuthSecretRefCredentials; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderPassworddepotAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderPassworddepotAuthSecretRef(obj: ClusterSecretStoreSpecProviderPassworddepotAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'credentials': toJson_ClusterSecretStoreSpecProviderPassworddepotAuthSecretRefCredentials(obj.credentials), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AppRole authenticates with Vault using the App Role auth mechanism, + * with the role and secret stored in a Kubernetes Secret resource. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthAppRole + */ +export interface ClusterSecretStoreSpecProviderVaultAuthAppRole { + /** + * Path where the App Role authentication backend is mounted + * in Vault, e.g: "approle" + * + * @schema ClusterSecretStoreSpecProviderVaultAuthAppRole#path + */ + readonly path: string; + + /** + * RoleID configured in the App Role authentication backend when setting + * up the authentication backend in Vault. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthAppRole#roleId + */ + readonly roleId: string; + + /** + * Reference to a key in a Secret that contains the App Role secret used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role secret. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthAppRole#secretRef + */ + readonly secretRef: ClusterSecretStoreSpecProviderVaultAuthAppRoleSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuthAppRole' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuthAppRole(obj: ClusterSecretStoreSpecProviderVaultAuthAppRole | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'path': obj.path, + 'roleId': obj.roleId, + 'secretRef': toJson_ClusterSecretStoreSpecProviderVaultAuthAppRoleSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Cert authenticates with TLS Certificates by passing client certificate, private key and ca certificate + * Cert authentication method + * + * @schema ClusterSecretStoreSpecProviderVaultAuthCert + */ +export interface ClusterSecretStoreSpecProviderVaultAuthCert { + /** + * ClientCert is a certificate to authenticate using the Cert Vault + * authentication method + * + * @schema ClusterSecretStoreSpecProviderVaultAuthCert#clientCert + */ + readonly clientCert?: ClusterSecretStoreSpecProviderVaultAuthCertClientCert; + + /** + * SecretRef to a key in a Secret resource containing client private key to + * authenticate with Vault using the Cert authentication method + * + * @schema ClusterSecretStoreSpecProviderVaultAuthCert#secretRef + */ + readonly secretRef?: ClusterSecretStoreSpecProviderVaultAuthCertSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuthCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuthCert(obj: ClusterSecretStoreSpecProviderVaultAuthCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientCert': toJson_ClusterSecretStoreSpecProviderVaultAuthCertClientCert(obj.clientCert), + 'secretRef': toJson_ClusterSecretStoreSpecProviderVaultAuthCertSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Jwt authenticates with Vault by passing role and JWT token using the + * JWT/OIDC authentication method + * + * @schema ClusterSecretStoreSpecProviderVaultAuthJwt + */ +export interface ClusterSecretStoreSpecProviderVaultAuthJwt { + /** + * Optional ServiceAccountToken specifies the Kubernetes service account for which to request + * a token for with the `TokenRequest` API. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthJwt#kubernetesServiceAccountToken + */ + readonly kubernetesServiceAccountToken?: ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken; + + /** + * Path where the JWT authentication backend is mounted + * in Vault, e.g: "jwt" + * + * @schema ClusterSecretStoreSpecProviderVaultAuthJwt#path + */ + readonly path: string; + + /** + * Role is a JWT role to authenticate using the JWT/OIDC Vault + * authentication method + * + * @schema ClusterSecretStoreSpecProviderVaultAuthJwt#role + */ + readonly role?: string; + + /** + * Optional SecretRef that refers to a key in a Secret resource containing JWT token to + * authenticate with Vault using the JWT/OIDC authentication method. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthJwt#secretRef + */ + readonly secretRef?: ClusterSecretStoreSpecProviderVaultAuthJwtSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuthJwt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuthJwt(obj: ClusterSecretStoreSpecProviderVaultAuthJwt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kubernetesServiceAccountToken': toJson_ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken(obj.kubernetesServiceAccountToken), + 'path': obj.path, + 'role': obj.role, + 'secretRef': toJson_ClusterSecretStoreSpecProviderVaultAuthJwtSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Kubernetes authenticates with Vault by passing the ServiceAccount + * token stored in the named Secret resource to the Vault server. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthKubernetes + */ +export interface ClusterSecretStoreSpecProviderVaultAuthKubernetes { + /** + * Path where the Kubernetes authentication backend is mounted in Vault, e.g: + * "kubernetes" + * + * @schema ClusterSecretStoreSpecProviderVaultAuthKubernetes#mountPath + */ + readonly mountPath: string; + + /** + * A required field containing the Vault Role to assume. A Role binds a + * Kubernetes ServiceAccount with a set of Vault policies. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthKubernetes#role + */ + readonly role: string; + + /** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Vault. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthKubernetes#secretRef + */ + readonly secretRef?: ClusterSecretStoreSpecProviderVaultAuthKubernetesSecretRef; + + /** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Vault. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthKubernetes#serviceAccountRef + */ + readonly serviceAccountRef?: ClusterSecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuthKubernetes' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuthKubernetes(obj: ClusterSecretStoreSpecProviderVaultAuthKubernetes | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'mountPath': obj.mountPath, + 'role': obj.role, + 'secretRef': toJson_ClusterSecretStoreSpecProviderVaultAuthKubernetesSecretRef(obj.secretRef), + 'serviceAccountRef': toJson_ClusterSecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Ldap authenticates with Vault by passing username/password pair using + * the LDAP authentication method + * + * @schema ClusterSecretStoreSpecProviderVaultAuthLdap + */ +export interface ClusterSecretStoreSpecProviderVaultAuthLdap { + /** + * Path where the LDAP authentication backend is mounted + * in Vault, e.g: "ldap" + * + * @schema ClusterSecretStoreSpecProviderVaultAuthLdap#path + */ + readonly path: string; + + /** + * SecretRef to a key in a Secret resource containing password for the LDAP + * user used to authenticate with Vault using the LDAP authentication + * method + * + * @schema ClusterSecretStoreSpecProviderVaultAuthLdap#secretRef + */ + readonly secretRef?: ClusterSecretStoreSpecProviderVaultAuthLdapSecretRef; + + /** + * Username is a LDAP user name used to authenticate using the LDAP Vault + * authentication method + * + * @schema ClusterSecretStoreSpecProviderVaultAuthLdap#username + */ + readonly username: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuthLdap' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuthLdap(obj: ClusterSecretStoreSpecProviderVaultAuthLdap | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'path': obj.path, + 'secretRef': toJson_ClusterSecretStoreSpecProviderVaultAuthLdapSecretRef(obj.secretRef), + 'username': obj.username, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * TokenSecretRef authenticates with Vault by presenting a token. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthTokenSecretRef + */ +export interface ClusterSecretStoreSpecProviderVaultAuthTokenSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthTokenSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthTokenSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthTokenSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuthTokenSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuthTokenSecretRef(obj: ClusterSecretStoreSpecProviderVaultAuthTokenSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreSpecProviderVaultCaProviderType + */ +export enum ClusterSecretStoreSpecProviderVaultCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreSpecProviderWebhookCaProviderType + */ +export enum ClusterSecretStoreSpecProviderWebhookCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * Secret ref to fill in credentials + * + * @schema ClusterSecretStoreSpecProviderWebhookSecretsSecretRef + */ +export interface ClusterSecretStoreSpecProviderWebhookSecretsSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderWebhookSecretsSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderWebhookSecretsSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderWebhookSecretsSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderWebhookSecretsSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderWebhookSecretsSecretRef(obj: ClusterSecretStoreSpecProviderWebhookSecretsSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The authorized key used for authentication + * + * @schema ClusterSecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef + */ +export interface ClusterSecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef(obj: ClusterSecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef + */ +export interface ClusterSecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef(obj: ClusterSecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Akeyless. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef + */ +export interface ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef(obj: ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Akeyless. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef + */ +export interface ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef(obj: ClusterSecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessID is used for authentication + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId + */ +export interface ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId(obj: ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType + */ +export interface ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType(obj: ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam + */ +export interface ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam(obj: ClusterSecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeyID is used for authentication + * + * @schema ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef + */ +export interface ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef(obj: ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeySecret is used for authentication + * + * @schema ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef + */ +export interface ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef(obj: ClusterSecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a ServiceAccount resource. + * + * @schema ClusterSecretStoreSpecProviderAwsAuthJwtServiceAccountRef + */ +export interface ClusterSecretStoreSpecProviderAwsAuthJwtServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreSpecProviderAwsAuthJwtServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderAwsAuthJwtServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderAwsAuthJwtServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAwsAuthJwtServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAwsAuthJwtServiceAccountRef(obj: ClusterSecretStoreSpecProviderAwsAuthJwtServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeyID is used for authentication + * + * @schema ClusterSecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef + */ +export interface ClusterSecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef(obj: ClusterSecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema ClusterSecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef + */ +export interface ClusterSecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef(obj: ClusterSecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema ClusterSecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef + */ +export interface ClusterSecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef(obj: ClusterSecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a ServiceAccount resource. + * + * @schema ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef + */ +export interface ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef(obj: ClusterSecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AccessToken is used for authentication. + * + * @schema ClusterSecretStoreSpecProviderGitlabAuthSecretRefAccessToken + */ +export interface ClusterSecretStoreSpecProviderGitlabAuthSecretRefAccessToken { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderGitlabAuthSecretRefAccessToken#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderGitlabAuthSecretRefAccessToken#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderGitlabAuthSecretRefAccessToken#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderGitlabAuthSecretRefAccessToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderGitlabAuthSecretRefAccessToken(obj: ClusterSecretStoreSpecProviderGitlabAuthSecretRefAccessToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema ClusterSecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef + */ +export interface ClusterSecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef(obj: ClusterSecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthCertClientCert + */ +export interface ClusterSecretStoreSpecProviderKubernetesAuthCertClientCert { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthCertClientCert#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthCertClientCert#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthCertClientCert#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderKubernetesAuthCertClientCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderKubernetesAuthCertClientCert(obj: ClusterSecretStoreSpecProviderKubernetesAuthCertClientCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthCertClientKey + */ +export interface ClusterSecretStoreSpecProviderKubernetesAuthCertClientKey { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthCertClientKey#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthCertClientKey#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthCertClientKey#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderKubernetesAuthCertClientKey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderKubernetesAuthCertClientKey(obj: ClusterSecretStoreSpecProviderKubernetesAuthCertClientKey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a ServiceAccount resource. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount + */ +export interface ClusterSecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount(obj: ClusterSecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthTokenBearerToken + */ +export interface ClusterSecretStoreSpecProviderKubernetesAuthTokenBearerToken { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthTokenBearerToken#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthTokenBearerToken#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderKubernetesAuthTokenBearerToken#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderKubernetesAuthTokenBearerToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderKubernetesAuthTokenBearerToken(obj: ClusterSecretStoreSpecProviderKubernetesAuthTokenBearerToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreSpecProviderKubernetesServerCaProviderType + */ +export enum ClusterSecretStoreSpecProviderKubernetesServerCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * Fingerprint is the fingerprint of the API private key. + * + * @schema ClusterSecretStoreSpecProviderOracleAuthSecretRefFingerprint + */ +export interface ClusterSecretStoreSpecProviderOracleAuthSecretRefFingerprint { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderOracleAuthSecretRefFingerprint#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderOracleAuthSecretRefFingerprint#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderOracleAuthSecretRefFingerprint#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderOracleAuthSecretRefFingerprint' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderOracleAuthSecretRefFingerprint(obj: ClusterSecretStoreSpecProviderOracleAuthSecretRefFingerprint | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * PrivateKey is the user's API Signing Key in PEM format, used for authentication. + * + * @schema ClusterSecretStoreSpecProviderOracleAuthSecretRefPrivatekey + */ +export interface ClusterSecretStoreSpecProviderOracleAuthSecretRefPrivatekey { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderOracleAuthSecretRefPrivatekey#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderOracleAuthSecretRefPrivatekey#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderOracleAuthSecretRefPrivatekey#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderOracleAuthSecretRefPrivatekey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderOracleAuthSecretRefPrivatekey(obj: ClusterSecretStoreSpecProviderOracleAuthSecretRefPrivatekey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Username / Password is used for authentication. + * + * @schema ClusterSecretStoreSpecProviderPassworddepotAuthSecretRefCredentials + */ +export interface ClusterSecretStoreSpecProviderPassworddepotAuthSecretRefCredentials { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderPassworddepotAuthSecretRefCredentials#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderPassworddepotAuthSecretRefCredentials#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderPassworddepotAuthSecretRefCredentials#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderPassworddepotAuthSecretRefCredentials' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderPassworddepotAuthSecretRefCredentials(obj: ClusterSecretStoreSpecProviderPassworddepotAuthSecretRefCredentials | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Reference to a key in a Secret that contains the App Role secret used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role secret. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthAppRoleSecretRef + */ +export interface ClusterSecretStoreSpecProviderVaultAuthAppRoleSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthAppRoleSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthAppRoleSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthAppRoleSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuthAppRoleSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuthAppRoleSecretRef(obj: ClusterSecretStoreSpecProviderVaultAuthAppRoleSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ClientCert is a certificate to authenticate using the Cert Vault + * authentication method + * + * @schema ClusterSecretStoreSpecProviderVaultAuthCertClientCert + */ +export interface ClusterSecretStoreSpecProviderVaultAuthCertClientCert { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthCertClientCert#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthCertClientCert#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthCertClientCert#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuthCertClientCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuthCertClientCert(obj: ClusterSecretStoreSpecProviderVaultAuthCertClientCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to a key in a Secret resource containing client private key to + * authenticate with Vault using the Cert authentication method + * + * @schema ClusterSecretStoreSpecProviderVaultAuthCertSecretRef + */ +export interface ClusterSecretStoreSpecProviderVaultAuthCertSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthCertSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthCertSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthCertSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuthCertSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuthCertSecretRef(obj: ClusterSecretStoreSpecProviderVaultAuthCertSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional ServiceAccountToken specifies the Kubernetes service account for which to request + * a token for with the `TokenRequest` API. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken + */ +export interface ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken { + /** + * Optional audiences field that will be used to request a temporary Kubernetes service + * account token for the service account referenced by `serviceAccountRef`. + * Defaults to a single audience `vault` it not specified. + * + * @default a single audience `vault` it not specified. + * @schema ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken#audiences + */ + readonly audiences?: string[]; + + /** + * Optional expiration time in seconds that will be used to request a temporary + * Kubernetes service account token for the service account referenced by + * `serviceAccountRef`. + * Defaults to 10 minutes. + * + * @default 10 minutes. + * @schema ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken#expirationSeconds + */ + readonly expirationSeconds?: number; + + /** + * Service account field containing the name of a kubernetes ServiceAccount. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken#serviceAccountRef + */ + readonly serviceAccountRef: ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken(obj: ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'expirationSeconds': obj.expirationSeconds, + 'serviceAccountRef': toJson_ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional SecretRef that refers to a key in a Secret resource containing JWT token to + * authenticate with Vault using the JWT/OIDC authentication method. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthJwtSecretRef + */ +export interface ClusterSecretStoreSpecProviderVaultAuthJwtSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthJwtSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthJwtSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthJwtSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuthJwtSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuthJwtSecretRef(obj: ClusterSecretStoreSpecProviderVaultAuthJwtSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Vault. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthKubernetesSecretRef + */ +export interface ClusterSecretStoreSpecProviderVaultAuthKubernetesSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthKubernetesSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthKubernetesSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthKubernetesSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuthKubernetesSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuthKubernetesSecretRef(obj: ClusterSecretStoreSpecProviderVaultAuthKubernetesSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Vault. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef + */ +export interface ClusterSecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef(obj: ClusterSecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to a key in a Secret resource containing password for the LDAP + * user used to authenticate with Vault using the LDAP authentication + * method + * + * @schema ClusterSecretStoreSpecProviderVaultAuthLdapSecretRef + */ +export interface ClusterSecretStoreSpecProviderVaultAuthLdapSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthLdapSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthLdapSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthLdapSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuthLdapSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuthLdapSecretRef(obj: ClusterSecretStoreSpecProviderVaultAuthLdapSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Service account field containing the name of a kubernetes ServiceAccount. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef + */ +export interface ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef(obj: ClusterSecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * ClusterSecretStore represents a secure external location for storing secrets, which can be referenced as part of `storeRef` fields. + * + * @schema ClusterSecretStoreV1Beta1 + */ +export class ClusterSecretStoreV1Beta1 extends ApiObject { + /** + * Returns the apiVersion and kind for "ClusterSecretStoreV1Beta1" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'external-secrets.io/v1beta1', + kind: 'ClusterSecretStore', + } + + /** + * Renders a Kubernetes manifest for "ClusterSecretStoreV1Beta1". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: ClusterSecretStoreV1Beta1Props = {}): any { + return { + ...ClusterSecretStoreV1Beta1.GVK, + ...toJson_ClusterSecretStoreV1Beta1Props(props), + }; + } + + /** + * Defines a "ClusterSecretStoreV1Beta1" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: ClusterSecretStoreV1Beta1Props = {}) { + super(scope, id, { + ...ClusterSecretStoreV1Beta1.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...ClusterSecretStoreV1Beta1.GVK, + ...toJson_ClusterSecretStoreV1Beta1Props(resolved), + }; + } +} + +/** + * ClusterSecretStore represents a secure external location for storing secrets, which can be referenced as part of `storeRef` fields. + * + * @schema ClusterSecretStoreV1Beta1 + */ +export interface ClusterSecretStoreV1Beta1Props { + /** + * @schema ClusterSecretStoreV1Beta1#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * SecretStoreSpec defines the desired state of SecretStore. + * + * @schema ClusterSecretStoreV1Beta1#spec + */ + readonly spec?: ClusterSecretStoreV1Beta1Spec; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1Props' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1Props(obj: ClusterSecretStoreV1Beta1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_ClusterSecretStoreV1Beta1Spec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretStoreSpec defines the desired state of SecretStore. + * + * @schema ClusterSecretStoreV1Beta1Spec + */ +export interface ClusterSecretStoreV1Beta1Spec { + /** + * Used to constraint a ClusterSecretStore to specific namespaces. Relevant only to ClusterSecretStore + * + * @schema ClusterSecretStoreV1Beta1Spec#conditions + */ + readonly conditions?: ClusterSecretStoreV1Beta1SpecConditions[]; + + /** + * Used to select the correct ESO controller (think: ingress.ingressClassName) + * The ESO controller is instantiated with a specific controller name and filters ES based on this property + * + * @schema ClusterSecretStoreV1Beta1Spec#controller + */ + readonly controller?: string; + + /** + * Used to configure the provider. Only one provider may be set + * + * @schema ClusterSecretStoreV1Beta1Spec#provider + */ + readonly provider: ClusterSecretStoreV1Beta1SpecProvider; + + /** + * Used to configure store refresh interval in seconds. Empty or 0 will default to the controller config. + * + * @schema ClusterSecretStoreV1Beta1Spec#refreshInterval + */ + readonly refreshInterval?: number; + + /** + * Used to configure http retries if failed + * + * @schema ClusterSecretStoreV1Beta1Spec#retrySettings + */ + readonly retrySettings?: ClusterSecretStoreV1Beta1SpecRetrySettings; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1Spec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1Spec(obj: ClusterSecretStoreV1Beta1Spec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'conditions': obj.conditions?.map(y => toJson_ClusterSecretStoreV1Beta1SpecConditions(y)), + 'controller': obj.controller, + 'provider': toJson_ClusterSecretStoreV1Beta1SpecProvider(obj.provider), + 'refreshInterval': obj.refreshInterval, + 'retrySettings': toJson_ClusterSecretStoreV1Beta1SpecRetrySettings(obj.retrySettings), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ClusterSecretStoreCondition describes a condition by which to choose namespaces to process ExternalSecrets in + * for a ClusterSecretStore instance. + * + * @schema ClusterSecretStoreV1Beta1SpecConditions + */ +export interface ClusterSecretStoreV1Beta1SpecConditions { + /** + * Choose namespace using a labelSelector + * + * @schema ClusterSecretStoreV1Beta1SpecConditions#namespaceSelector + */ + readonly namespaceSelector?: ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelector; + + /** + * Choose namespaces by name + * + * @schema ClusterSecretStoreV1Beta1SpecConditions#namespaces + */ + readonly namespaces?: string[]; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecConditions' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecConditions(obj: ClusterSecretStoreV1Beta1SpecConditions | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'namespaceSelector': toJson_ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelector(obj.namespaceSelector), + 'namespaces': obj.namespaces?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to configure the provider. Only one provider may be set + * + * @schema ClusterSecretStoreV1Beta1SpecProvider + */ +export interface ClusterSecretStoreV1Beta1SpecProvider { + /** + * Akeyless configures this store to sync secrets using Akeyless Vault provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#akeyless + */ + readonly akeyless?: ClusterSecretStoreV1Beta1SpecProviderAkeyless; + + /** + * Alibaba configures this store to sync secrets using Alibaba Cloud provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#alibaba + */ + readonly alibaba?: ClusterSecretStoreV1Beta1SpecProviderAlibaba; + + /** + * AWS configures this store to sync secrets using AWS Secret Manager provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#aws + */ + readonly aws?: ClusterSecretStoreV1Beta1SpecProviderAws; + + /** + * AzureKV configures this store to sync secrets using Azure Key Vault provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#azurekv + */ + readonly azurekv?: ClusterSecretStoreV1Beta1SpecProviderAzurekv; + + /** + * Chef configures this store to sync secrets with chef server + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#chef + */ + readonly chef?: ClusterSecretStoreV1Beta1SpecProviderChef; + + /** + * Conjur configures this store to sync secrets using conjur provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#conjur + */ + readonly conjur?: ClusterSecretStoreV1Beta1SpecProviderConjur; + + /** + * Delinea DevOps Secrets Vault + * https://docs.delinea.com/online-help/products/devops-secrets-vault/current + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#delinea + */ + readonly delinea?: ClusterSecretStoreV1Beta1SpecProviderDelinea; + + /** + * Doppler configures this store to sync secrets using the Doppler provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#doppler + */ + readonly doppler?: ClusterSecretStoreV1Beta1SpecProviderDoppler; + + /** + * Fake configures a store with static key/value pairs + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#fake + */ + readonly fake?: ClusterSecretStoreV1Beta1SpecProviderFake; + + /** + * Fortanix configures this store to sync secrets using the Fortanix provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#fortanix + */ + readonly fortanix?: ClusterSecretStoreV1Beta1SpecProviderFortanix; + + /** + * GCPSM configures this store to sync secrets using Google Cloud Platform Secret Manager provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#gcpsm + */ + readonly gcpsm?: ClusterSecretStoreV1Beta1SpecProviderGcpsm; + + /** + * GitLab configures this store to sync secrets using GitLab Variables provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#gitlab + */ + readonly gitlab?: ClusterSecretStoreV1Beta1SpecProviderGitlab; + + /** + * IBM configures this store to sync secrets using IBM Cloud provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#ibm + */ + readonly ibm?: ClusterSecretStoreV1Beta1SpecProviderIbm; + + /** + * KeeperSecurity configures this store to sync secrets using the KeeperSecurity provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#keepersecurity + */ + readonly keepersecurity?: ClusterSecretStoreV1Beta1SpecProviderKeepersecurity; + + /** + * Kubernetes configures this store to sync secrets using a Kubernetes cluster provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#kubernetes + */ + readonly kubernetes?: ClusterSecretStoreV1Beta1SpecProviderKubernetes; + + /** + * Onboardbase configures this store to sync secrets using the Onboardbase provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#onboardbase + */ + readonly onboardbase?: ClusterSecretStoreV1Beta1SpecProviderOnboardbase; + + /** + * OnePassword configures this store to sync secrets using the 1Password Cloud provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#onepassword + */ + readonly onepassword?: ClusterSecretStoreV1Beta1SpecProviderOnepassword; + + /** + * Oracle configures this store to sync secrets using Oracle Vault provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#oracle + */ + readonly oracle?: ClusterSecretStoreV1Beta1SpecProviderOracle; + + /** + * @schema ClusterSecretStoreV1Beta1SpecProvider#passbolt + */ + readonly passbolt?: ClusterSecretStoreV1Beta1SpecProviderPassbolt; + + /** + * Configures a store to sync secrets with a Password Depot instance. + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#passworddepot + */ + readonly passworddepot?: ClusterSecretStoreV1Beta1SpecProviderPassworddepot; + + /** + * Pulumi configures this store to sync secrets using the Pulumi provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#pulumi + */ + readonly pulumi?: ClusterSecretStoreV1Beta1SpecProviderPulumi; + + /** + * Scaleway + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#scaleway + */ + readonly scaleway?: ClusterSecretStoreV1Beta1SpecProviderScaleway; + + /** + * Senhasegura configures this store to sync secrets using senhasegura provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#senhasegura + */ + readonly senhasegura?: ClusterSecretStoreV1Beta1SpecProviderSenhasegura; + + /** + * Vault configures this store to sync secrets using Hashi provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#vault + */ + readonly vault?: ClusterSecretStoreV1Beta1SpecProviderVault; + + /** + * Webhook configures this store to sync secrets using a generic templated webhook + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#webhook + */ + readonly webhook?: ClusterSecretStoreV1Beta1SpecProviderWebhook; + + /** + * YandexCertificateManager configures this store to sync secrets using Yandex Certificate Manager provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#yandexcertificatemanager + */ + readonly yandexcertificatemanager?: ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanager; + + /** + * YandexLockbox configures this store to sync secrets using Yandex Lockbox provider + * + * @schema ClusterSecretStoreV1Beta1SpecProvider#yandexlockbox + */ + readonly yandexlockbox?: ClusterSecretStoreV1Beta1SpecProviderYandexlockbox; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProvider(obj: ClusterSecretStoreV1Beta1SpecProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'akeyless': toJson_ClusterSecretStoreV1Beta1SpecProviderAkeyless(obj.akeyless), + 'alibaba': toJson_ClusterSecretStoreV1Beta1SpecProviderAlibaba(obj.alibaba), + 'aws': toJson_ClusterSecretStoreV1Beta1SpecProviderAws(obj.aws), + 'azurekv': toJson_ClusterSecretStoreV1Beta1SpecProviderAzurekv(obj.azurekv), + 'chef': toJson_ClusterSecretStoreV1Beta1SpecProviderChef(obj.chef), + 'conjur': toJson_ClusterSecretStoreV1Beta1SpecProviderConjur(obj.conjur), + 'delinea': toJson_ClusterSecretStoreV1Beta1SpecProviderDelinea(obj.delinea), + 'doppler': toJson_ClusterSecretStoreV1Beta1SpecProviderDoppler(obj.doppler), + 'fake': toJson_ClusterSecretStoreV1Beta1SpecProviderFake(obj.fake), + 'fortanix': toJson_ClusterSecretStoreV1Beta1SpecProviderFortanix(obj.fortanix), + 'gcpsm': toJson_ClusterSecretStoreV1Beta1SpecProviderGcpsm(obj.gcpsm), + 'gitlab': toJson_ClusterSecretStoreV1Beta1SpecProviderGitlab(obj.gitlab), + 'ibm': toJson_ClusterSecretStoreV1Beta1SpecProviderIbm(obj.ibm), + 'keepersecurity': toJson_ClusterSecretStoreV1Beta1SpecProviderKeepersecurity(obj.keepersecurity), + 'kubernetes': toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetes(obj.kubernetes), + 'onboardbase': toJson_ClusterSecretStoreV1Beta1SpecProviderOnboardbase(obj.onboardbase), + 'onepassword': toJson_ClusterSecretStoreV1Beta1SpecProviderOnepassword(obj.onepassword), + 'oracle': toJson_ClusterSecretStoreV1Beta1SpecProviderOracle(obj.oracle), + 'passbolt': toJson_ClusterSecretStoreV1Beta1SpecProviderPassbolt(obj.passbolt), + 'passworddepot': toJson_ClusterSecretStoreV1Beta1SpecProviderPassworddepot(obj.passworddepot), + 'pulumi': toJson_ClusterSecretStoreV1Beta1SpecProviderPulumi(obj.pulumi), + 'scaleway': toJson_ClusterSecretStoreV1Beta1SpecProviderScaleway(obj.scaleway), + 'senhasegura': toJson_ClusterSecretStoreV1Beta1SpecProviderSenhasegura(obj.senhasegura), + 'vault': toJson_ClusterSecretStoreV1Beta1SpecProviderVault(obj.vault), + 'webhook': toJson_ClusterSecretStoreV1Beta1SpecProviderWebhook(obj.webhook), + 'yandexcertificatemanager': toJson_ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanager(obj.yandexcertificatemanager), + 'yandexlockbox': toJson_ClusterSecretStoreV1Beta1SpecProviderYandexlockbox(obj.yandexlockbox), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to configure http retries if failed + * + * @schema ClusterSecretStoreV1Beta1SpecRetrySettings + */ +export interface ClusterSecretStoreV1Beta1SpecRetrySettings { + /** + * @schema ClusterSecretStoreV1Beta1SpecRetrySettings#maxRetries + */ + readonly maxRetries?: number; + + /** + * @schema ClusterSecretStoreV1Beta1SpecRetrySettings#retryInterval + */ + readonly retryInterval?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecRetrySettings' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecRetrySettings(obj: ClusterSecretStoreV1Beta1SpecRetrySettings | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'maxRetries': obj.maxRetries, + 'retryInterval': obj.retryInterval, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Choose namespace using a labelSelector + * + * @schema ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelector + */ +export interface ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelector { + /** + * matchExpressions is a list of label selector requirements. The requirements are ANDed. + * + * @schema ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelector#matchExpressions + */ + readonly matchExpressions?: ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions[]; + + /** + * 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. + * + * @schema ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelector#matchLabels + */ + readonly matchLabels?: { [key: string]: string }; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelector' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelector(obj: ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelector | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'matchExpressions': obj.matchExpressions?.map(y => toJson_ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions(y)), + 'matchLabels': ((obj.matchLabels) === undefined) ? undefined : (Object.entries(obj.matchLabels).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Akeyless configures this store to sync secrets using Akeyless Vault provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeyless + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAkeyless { + /** + * Akeyless GW API Url from which the secrets to be fetched from. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeyless#akeylessGWApiURL + */ + readonly akeylessGwApiUrl: string; + + /** + * Auth configures how the operator authenticates with Akeyless. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeyless#authSecretRef + */ + readonly authSecretRef: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef; + + /** + * PEM/base64 encoded CA bundle used to validate Akeyless Gateway certificate. Only used + * if the AkeylessGWApiURL URL is using HTTPS protocol. If not set the system root certificates + * are used to validate the TLS connection. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeyless#caBundle + */ + readonly caBundle?: string; + + /** + * The provider for the CA bundle to use to validate Akeyless Gateway certificate. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeyless#caProvider + */ + readonly caProvider?: ClusterSecretStoreV1Beta1SpecProviderAkeylessCaProvider; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAkeyless' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAkeyless(obj: ClusterSecretStoreV1Beta1SpecProviderAkeyless | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'akeylessGWApiURL': obj.akeylessGwApiUrl, + 'authSecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef(obj.authSecretRef), + 'caBundle': obj.caBundle, + 'caProvider': toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessCaProvider(obj.caProvider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Alibaba configures this store to sync secrets using Alibaba Cloud provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibaba + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAlibaba { + /** + * AlibabaAuth contains a secretRef for credentials. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibaba#auth + */ + readonly auth: ClusterSecretStoreV1Beta1SpecProviderAlibabaAuth; + + /** + * Alibaba Region to be used for the provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibaba#regionID + */ + readonly regionId: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAlibaba' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAlibaba(obj: ClusterSecretStoreV1Beta1SpecProviderAlibaba | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderAlibabaAuth(obj.auth), + 'regionID': obj.regionId, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AWS configures this store to sync secrets using AWS Secret Manager provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAws + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAws { + /** + * AdditionalRoles is a chained list of Role ARNs which the provider will sequentially assume before assuming the Role + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAws#additionalRoles + */ + readonly additionalRoles?: string[]; + + /** + * Auth defines the information necessary to authenticate against AWS + * if not set aws sdk will infer credentials from your environment + * see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAws#auth + */ + readonly auth?: ClusterSecretStoreV1Beta1SpecProviderAwsAuth; + + /** + * AWS External ID set on assumed IAM roles + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAws#externalID + */ + readonly externalId?: string; + + /** + * AWS Region to be used for the provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAws#region + */ + readonly region: string; + + /** + * Role is a Role ARN which the provider will assume + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAws#role + */ + readonly role?: string; + + /** + * SecretsManager defines how the provider behaves when interacting with AWS SecretsManager + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAws#secretsManager + */ + readonly secretsManager?: ClusterSecretStoreV1Beta1SpecProviderAwsSecretsManager; + + /** + * Service defines which service should be used to fetch the secrets + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAws#service + */ + readonly service: ClusterSecretStoreV1Beta1SpecProviderAwsService; + + /** + * AWS STS assume role session tags + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAws#sessionTags + */ + readonly sessionTags?: ClusterSecretStoreV1Beta1SpecProviderAwsSessionTags[]; + + /** + * AWS STS assume role transitive session tags. Required when multiple rules are used with the provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAws#transitiveTagKeys + */ + readonly transitiveTagKeys?: string[]; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAws' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAws(obj: ClusterSecretStoreV1Beta1SpecProviderAws | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'additionalRoles': obj.additionalRoles?.map(y => y), + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderAwsAuth(obj.auth), + 'externalID': obj.externalId, + 'region': obj.region, + 'role': obj.role, + 'secretsManager': toJson_ClusterSecretStoreV1Beta1SpecProviderAwsSecretsManager(obj.secretsManager), + 'service': obj.service, + 'sessionTags': obj.sessionTags?.map(y => toJson_ClusterSecretStoreV1Beta1SpecProviderAwsSessionTags(y)), + 'transitiveTagKeys': obj.transitiveTagKeys?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AzureKV configures this store to sync secrets using Azure Key Vault provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekv + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAzurekv { + /** + * Auth configures how the operator authenticates with Azure. Required for ServicePrincipal auth type. Optional for WorkloadIdentity. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekv#authSecretRef + */ + readonly authSecretRef?: ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef; + + /** + * Auth type defines how to authenticate to the keyvault service. + * Valid values are: + * - "ServicePrincipal" (default): Using a service principal (tenantId, clientId, clientSecret) + * - "ManagedIdentity": Using Managed Identity assigned to the pod (see aad-pod-identity) + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekv#authType + */ + readonly authType?: ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthType; + + /** + * EnvironmentType specifies the Azure cloud environment endpoints to use for + * connecting and authenticating with Azure. By default it points to the public cloud AAD endpoint. + * The following endpoints are available, also see here: https://github.com/Azure/go-autorest/blob/main/autorest/azure/environments.go#L152 + * PublicCloud, USGovernmentCloud, ChinaCloud, GermanCloud + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekv#environmentType + */ + readonly environmentType?: ClusterSecretStoreV1Beta1SpecProviderAzurekvEnvironmentType; + + /** + * If multiple Managed Identity is assigned to the pod, you can select the one to be used + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekv#identityId + */ + readonly identityId?: string; + + /** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekv#serviceAccountRef + */ + readonly serviceAccountRef?: ClusterSecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef; + + /** + * TenantID configures the Azure Tenant to send requests to. Required for ServicePrincipal auth type. Optional for WorkloadIdentity. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekv#tenantId + */ + readonly tenantId?: string; + + /** + * Vault Url from which the secrets to be fetched from. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekv#vaultUrl + */ + readonly vaultUrl: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAzurekv' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAzurekv(obj: ClusterSecretStoreV1Beta1SpecProviderAzurekv | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'authSecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef(obj.authSecretRef), + 'authType': obj.authType, + 'environmentType': obj.environmentType, + 'identityId': obj.identityId, + 'serviceAccountRef': toJson_ClusterSecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef(obj.serviceAccountRef), + 'tenantId': obj.tenantId, + 'vaultUrl': obj.vaultUrl, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Chef configures this store to sync secrets with chef server + * + * @schema ClusterSecretStoreV1Beta1SpecProviderChef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderChef { + /** + * Auth defines the information necessary to authenticate against chef Server + * + * @schema ClusterSecretStoreV1Beta1SpecProviderChef#auth + */ + readonly auth: ClusterSecretStoreV1Beta1SpecProviderChefAuth; + + /** + * ServerURL is the chef server URL used to connect to. If using orgs you should include your org in the url and terminate the url with a "/" + * + * @schema ClusterSecretStoreV1Beta1SpecProviderChef#serverUrl + */ + readonly serverUrl: string; + + /** + * UserName should be the user ID on the chef server + * + * @schema ClusterSecretStoreV1Beta1SpecProviderChef#username + */ + readonly username: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderChef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderChef(obj: ClusterSecretStoreV1Beta1SpecProviderChef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderChefAuth(obj.auth), + 'serverUrl': obj.serverUrl, + 'username': obj.username, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Conjur configures this store to sync secrets using conjur provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjur + */ +export interface ClusterSecretStoreV1Beta1SpecProviderConjur { + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderConjur#auth + */ + readonly auth: ClusterSecretStoreV1Beta1SpecProviderConjurAuth; + + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderConjur#caBundle + */ + readonly caBundle?: string; + + /** + * Used to provide custom certificate authority (CA) certificates + * for a secret store. The CAProvider points to a Secret or ConfigMap resource + * that contains a PEM-encoded certificate. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjur#caProvider + */ + readonly caProvider?: ClusterSecretStoreV1Beta1SpecProviderConjurCaProvider; + + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderConjur#url + */ + readonly url: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderConjur' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderConjur(obj: ClusterSecretStoreV1Beta1SpecProviderConjur | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderConjurAuth(obj.auth), + 'caBundle': obj.caBundle, + 'caProvider': toJson_ClusterSecretStoreV1Beta1SpecProviderConjurCaProvider(obj.caProvider), + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Delinea DevOps Secrets Vault + * https://docs.delinea.com/online-help/products/devops-secrets-vault/current + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelinea + */ +export interface ClusterSecretStoreV1Beta1SpecProviderDelinea { + /** + * ClientID is the non-secret part of the credential. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelinea#clientId + */ + readonly clientId: ClusterSecretStoreV1Beta1SpecProviderDelineaClientId; + + /** + * ClientSecret is the secret part of the credential. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelinea#clientSecret + */ + readonly clientSecret: ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecret; + + /** + * Tenant is the chosen hostname / site name. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelinea#tenant + */ + readonly tenant: string; + + /** + * TLD is based on the server location that was chosen during provisioning. + * If unset, defaults to "com". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelinea#tld + */ + readonly tld?: string; + + /** + * URLTemplate + * If unset, defaults to "https://%s.secretsvaultcloud.%s/v1/%s%s". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelinea#urlTemplate + */ + readonly urlTemplate?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderDelinea' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderDelinea(obj: ClusterSecretStoreV1Beta1SpecProviderDelinea | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientId': toJson_ClusterSecretStoreV1Beta1SpecProviderDelineaClientId(obj.clientId), + 'clientSecret': toJson_ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecret(obj.clientSecret), + 'tenant': obj.tenant, + 'tld': obj.tld, + 'urlTemplate': obj.urlTemplate, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Doppler configures this store to sync secrets using the Doppler provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDoppler + */ +export interface ClusterSecretStoreV1Beta1SpecProviderDoppler { + /** + * Auth configures how the Operator authenticates with the Doppler API + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDoppler#auth + */ + readonly auth: ClusterSecretStoreV1Beta1SpecProviderDopplerAuth; + + /** + * Doppler config (required if not using a Service Token) + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDoppler#config + */ + readonly config?: string; + + /** + * Format enables the downloading of secrets as a file (string) + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDoppler#format + */ + readonly format?: ClusterSecretStoreV1Beta1SpecProviderDopplerFormat; + + /** + * Environment variable compatible name transforms that change secret names to a different format + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDoppler#nameTransformer + */ + readonly nameTransformer?: ClusterSecretStoreV1Beta1SpecProviderDopplerNameTransformer; + + /** + * Doppler project (required if not using a Service Token) + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDoppler#project + */ + readonly project?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderDoppler' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderDoppler(obj: ClusterSecretStoreV1Beta1SpecProviderDoppler | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderDopplerAuth(obj.auth), + 'config': obj.config, + 'format': obj.format, + 'nameTransformer': obj.nameTransformer, + 'project': obj.project, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Fake configures a store with static key/value pairs + * + * @schema ClusterSecretStoreV1Beta1SpecProviderFake + */ +export interface ClusterSecretStoreV1Beta1SpecProviderFake { + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderFake#data + */ + readonly data: ClusterSecretStoreV1Beta1SpecProviderFakeData[]; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderFake' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderFake(obj: ClusterSecretStoreV1Beta1SpecProviderFake | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'data': obj.data?.map(y => toJson_ClusterSecretStoreV1Beta1SpecProviderFakeData(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Fortanix configures this store to sync secrets using the Fortanix provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderFortanix + */ +export interface ClusterSecretStoreV1Beta1SpecProviderFortanix { + /** + * APIKey is the API token to access SDKMS Applications. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderFortanix#apiKey + */ + readonly apiKey?: ClusterSecretStoreV1Beta1SpecProviderFortanixApiKey; + + /** + * APIURL is the URL of SDKMS API. Defaults to `sdkms.fortanix.com`. + * + * @default sdkms.fortanix.com`. + * @schema ClusterSecretStoreV1Beta1SpecProviderFortanix#apiUrl + */ + readonly apiUrl?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderFortanix' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderFortanix(obj: ClusterSecretStoreV1Beta1SpecProviderFortanix | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiKey': toJson_ClusterSecretStoreV1Beta1SpecProviderFortanixApiKey(obj.apiKey), + 'apiUrl': obj.apiUrl, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * GCPSM configures this store to sync secrets using Google Cloud Platform Secret Manager provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsm + */ +export interface ClusterSecretStoreV1Beta1SpecProviderGcpsm { + /** + * Auth defines the information necessary to authenticate against GCP + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsm#auth + */ + readonly auth?: ClusterSecretStoreV1Beta1SpecProviderGcpsmAuth; + + /** + * ProjectID project where secret is located + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsm#projectID + */ + readonly projectId?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderGcpsm' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderGcpsm(obj: ClusterSecretStoreV1Beta1SpecProviderGcpsm | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderGcpsmAuth(obj.auth), + 'projectID': obj.projectId, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * GitLab configures this store to sync secrets using GitLab Variables provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGitlab + */ +export interface ClusterSecretStoreV1Beta1SpecProviderGitlab { + /** + * Auth configures how secret-manager authenticates with a GitLab instance. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGitlab#auth + */ + readonly auth: ClusterSecretStoreV1Beta1SpecProviderGitlabAuth; + + /** + * Environment environment_scope of gitlab CI/CD variables (Please see https://docs.gitlab.com/ee/ci/environments/#create-a-static-environment on how to create environments) + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGitlab#environment + */ + readonly environment?: string; + + /** + * GroupIDs specify, which gitlab groups to pull secrets from. Group secrets are read from left to right followed by the project variables. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGitlab#groupIDs + */ + readonly groupIDs?: string[]; + + /** + * InheritFromGroups specifies whether parent groups should be discovered and checked for secrets. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGitlab#inheritFromGroups + */ + readonly inheritFromGroups?: boolean; + + /** + * ProjectID specifies a project where secrets are located. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGitlab#projectID + */ + readonly projectId?: string; + + /** + * URL configures the GitLab instance URL. Defaults to https://gitlab.com/. + * + * @default https://gitlab.com/. + * @schema ClusterSecretStoreV1Beta1SpecProviderGitlab#url + */ + readonly url?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderGitlab' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderGitlab(obj: ClusterSecretStoreV1Beta1SpecProviderGitlab | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderGitlabAuth(obj.auth), + 'environment': obj.environment, + 'groupIDs': obj.groupIDs?.map(y => y), + 'inheritFromGroups': obj.inheritFromGroups, + 'projectID': obj.projectId, + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * IBM configures this store to sync secrets using IBM Cloud provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderIbm + */ +export interface ClusterSecretStoreV1Beta1SpecProviderIbm { + /** + * Auth configures how secret-manager authenticates with the IBM secrets manager. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderIbm#auth + */ + readonly auth: ClusterSecretStoreV1Beta1SpecProviderIbmAuth; + + /** + * ServiceURL is the Endpoint URL that is specific to the Secrets Manager service instance + * + * @schema ClusterSecretStoreV1Beta1SpecProviderIbm#serviceUrl + */ + readonly serviceUrl?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderIbm' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderIbm(obj: ClusterSecretStoreV1Beta1SpecProviderIbm | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderIbmAuth(obj.auth), + 'serviceUrl': obj.serviceUrl, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * KeeperSecurity configures this store to sync secrets using the KeeperSecurity provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKeepersecurity + */ +export interface ClusterSecretStoreV1Beta1SpecProviderKeepersecurity { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKeepersecurity#authRef + */ + readonly authRef: ClusterSecretStoreV1Beta1SpecProviderKeepersecurityAuthRef; + + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderKeepersecurity#folderID + */ + readonly folderId: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderKeepersecurity' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderKeepersecurity(obj: ClusterSecretStoreV1Beta1SpecProviderKeepersecurity | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'authRef': toJson_ClusterSecretStoreV1Beta1SpecProviderKeepersecurityAuthRef(obj.authRef), + 'folderID': obj.folderId, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Kubernetes configures this store to sync secrets using a Kubernetes cluster provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetes + */ +export interface ClusterSecretStoreV1Beta1SpecProviderKubernetes { + /** + * Auth configures how secret-manager authenticates with a Kubernetes instance. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetes#auth + */ + readonly auth: ClusterSecretStoreV1Beta1SpecProviderKubernetesAuth; + + /** + * Remote namespace to fetch the secrets from + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetes#remoteNamespace + */ + readonly remoteNamespace?: string; + + /** + * configures the Kubernetes server Address. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetes#server + */ + readonly server?: ClusterSecretStoreV1Beta1SpecProviderKubernetesServer; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderKubernetes' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetes(obj: ClusterSecretStoreV1Beta1SpecProviderKubernetes | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesAuth(obj.auth), + 'remoteNamespace': obj.remoteNamespace, + 'server': toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesServer(obj.server), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Onboardbase configures this store to sync secrets using the Onboardbase provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbase + */ +export interface ClusterSecretStoreV1Beta1SpecProviderOnboardbase { + /** + * APIHost use this to configure the host url for the API for selfhosted installation, default is https://public.onboardbase.com/api/v1/ + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbase#apiHost + */ + readonly apiHost: string; + + /** + * Auth configures how the Operator authenticates with the Onboardbase API + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbase#auth + */ + readonly auth: ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuth; + + /** + * Environment is the name of an environmnent within a project to pull the secrets from + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbase#environment + */ + readonly environment: string; + + /** + * Project is an onboardbase project that the secrets should be pulled from + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbase#project + */ + readonly project: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderOnboardbase' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderOnboardbase(obj: ClusterSecretStoreV1Beta1SpecProviderOnboardbase | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiHost': obj.apiHost, + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuth(obj.auth), + 'environment': obj.environment, + 'project': obj.project, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * OnePassword configures this store to sync secrets using the 1Password Cloud provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnepassword + */ +export interface ClusterSecretStoreV1Beta1SpecProviderOnepassword { + /** + * Auth defines the information necessary to authenticate against OnePassword Connect Server + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnepassword#auth + */ + readonly auth: ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuth; + + /** + * ConnectHost defines the OnePassword Connect Server to connect to + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnepassword#connectHost + */ + readonly connectHost: string; + + /** + * Vaults defines which OnePassword vaults to search in which order + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnepassword#vaults + */ + readonly vaults: { [key: string]: number }; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderOnepassword' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderOnepassword(obj: ClusterSecretStoreV1Beta1SpecProviderOnepassword | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuth(obj.auth), + 'connectHost': obj.connectHost, + 'vaults': ((obj.vaults) === undefined) ? undefined : (Object.entries(obj.vaults).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Oracle configures this store to sync secrets using Oracle Vault provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracle + */ +export interface ClusterSecretStoreV1Beta1SpecProviderOracle { + /** + * Auth configures how secret-manager authenticates with the Oracle Vault. + * If empty, use the instance principal, otherwise the user credentials specified in Auth. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracle#auth + */ + readonly auth?: ClusterSecretStoreV1Beta1SpecProviderOracleAuth; + + /** + * Compartment is the vault compartment OCID. + * Required for PushSecret + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracle#compartment + */ + readonly compartment?: string; + + /** + * EncryptionKey is the OCID of the encryption key within the vault. + * Required for PushSecret + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracle#encryptionKey + */ + readonly encryptionKey?: string; + + /** + * The type of principal to use for authentication. If left blank, the Auth struct will + * determine the principal type. This optional field must be specified if using + * workload identity. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracle#principalType + */ + readonly principalType?: ClusterSecretStoreV1Beta1SpecProviderOraclePrincipalType; + + /** + * Region is the region where vault is located. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracle#region + */ + readonly region: string; + + /** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracle#serviceAccountRef + */ + readonly serviceAccountRef?: ClusterSecretStoreV1Beta1SpecProviderOracleServiceAccountRef; + + /** + * Vault is the vault's OCID of the specific vault where secret is located. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracle#vault + */ + readonly vault: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderOracle' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderOracle(obj: ClusterSecretStoreV1Beta1SpecProviderOracle | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderOracleAuth(obj.auth), + 'compartment': obj.compartment, + 'encryptionKey': obj.encryptionKey, + 'principalType': obj.principalType, + 'region': obj.region, + 'serviceAccountRef': toJson_ClusterSecretStoreV1Beta1SpecProviderOracleServiceAccountRef(obj.serviceAccountRef), + 'vault': obj.vault, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreV1Beta1SpecProviderPassbolt + */ +export interface ClusterSecretStoreV1Beta1SpecProviderPassbolt { + /** + * Auth defines the information necessary to authenticate against Passbolt Server + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassbolt#auth + */ + readonly auth: ClusterSecretStoreV1Beta1SpecProviderPassboltAuth; + + /** + * Host defines the Passbolt Server to connect to + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassbolt#host + */ + readonly host: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderPassbolt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderPassbolt(obj: ClusterSecretStoreV1Beta1SpecProviderPassbolt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderPassboltAuth(obj.auth), + 'host': obj.host, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Configures a store to sync secrets with a Password Depot instance. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassworddepot + */ +export interface ClusterSecretStoreV1Beta1SpecProviderPassworddepot { + /** + * Auth configures how secret-manager authenticates with a Password Depot instance. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassworddepot#auth + */ + readonly auth: ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuth; + + /** + * Database to use as source + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassworddepot#database + */ + readonly database: string; + + /** + * URL configures the Password Depot instance URL. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassworddepot#host + */ + readonly host: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderPassworddepot' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderPassworddepot(obj: ClusterSecretStoreV1Beta1SpecProviderPassworddepot | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuth(obj.auth), + 'database': obj.database, + 'host': obj.host, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Pulumi configures this store to sync secrets using the Pulumi provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPulumi + */ +export interface ClusterSecretStoreV1Beta1SpecProviderPulumi { + /** + * AccessToken is the access tokens to sign in to the Pulumi Cloud Console. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPulumi#accessToken + */ + readonly accessToken: ClusterSecretStoreV1Beta1SpecProviderPulumiAccessToken; + + /** + * APIURL is the URL of the Pulumi API. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPulumi#apiUrl + */ + readonly apiUrl?: string; + + /** + * Environment are YAML documents composed of static key-value pairs, programmatic expressions, + * dynamically retrieved values from supported providers including all major clouds, + * and other Pulumi ESC environments. + * To create a new environment, visit https://www.pulumi.com/docs/esc/environments/ for more information. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPulumi#environment + */ + readonly environment: string; + + /** + * Organization are a space to collaborate on shared projects and stacks. + * To create a new organization, visit https://app.pulumi.com/ and click "New Organization". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPulumi#organization + */ + readonly organization: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderPulumi' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderPulumi(obj: ClusterSecretStoreV1Beta1SpecProviderPulumi | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessToken': toJson_ClusterSecretStoreV1Beta1SpecProviderPulumiAccessToken(obj.accessToken), + 'apiUrl': obj.apiUrl, + 'environment': obj.environment, + 'organization': obj.organization, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Scaleway + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScaleway + */ +export interface ClusterSecretStoreV1Beta1SpecProviderScaleway { + /** + * AccessKey is the non-secret part of the api key. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScaleway#accessKey + */ + readonly accessKey: ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKey; + + /** + * APIURL is the url of the api to use. Defaults to https://api.scaleway.com + * + * @default https://api.scaleway.com + * @schema ClusterSecretStoreV1Beta1SpecProviderScaleway#apiUrl + */ + readonly apiUrl?: string; + + /** + * ProjectID is the id of your project, which you can find in the console: https://console.scaleway.com/project/settings + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScaleway#projectId + */ + readonly projectId: string; + + /** + * Region where your secrets are located: https://developers.scaleway.com/en/quickstart/#region-and-zone + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScaleway#region + */ + readonly region: string; + + /** + * SecretKey is the non-secret part of the api key. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScaleway#secretKey + */ + readonly secretKey: ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKey; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderScaleway' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderScaleway(obj: ClusterSecretStoreV1Beta1SpecProviderScaleway | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessKey': toJson_ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKey(obj.accessKey), + 'apiUrl': obj.apiUrl, + 'projectId': obj.projectId, + 'region': obj.region, + 'secretKey': toJson_ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKey(obj.secretKey), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Senhasegura configures this store to sync secrets using senhasegura provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderSenhasegura + */ +export interface ClusterSecretStoreV1Beta1SpecProviderSenhasegura { + /** + * Auth defines parameters to authenticate in senhasegura + * + * @schema ClusterSecretStoreV1Beta1SpecProviderSenhasegura#auth + */ + readonly auth: ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuth; + + /** + * IgnoreSslCertificate defines if SSL certificate must be ignored + * + * @schema ClusterSecretStoreV1Beta1SpecProviderSenhasegura#ignoreSslCertificate + */ + readonly ignoreSslCertificate?: boolean; + + /** + * Module defines which senhasegura module should be used to get secrets + * + * @schema ClusterSecretStoreV1Beta1SpecProviderSenhasegura#module + */ + readonly module: string; + + /** + * URL of senhasegura + * + * @schema ClusterSecretStoreV1Beta1SpecProviderSenhasegura#url + */ + readonly url: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderSenhasegura' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderSenhasegura(obj: ClusterSecretStoreV1Beta1SpecProviderSenhasegura | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuth(obj.auth), + 'ignoreSslCertificate': obj.ignoreSslCertificate, + 'module': obj.module, + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Vault configures this store to sync secrets using Hashi provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVault + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVault { + /** + * Auth configures how secret-manager authenticates with the Vault server. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVault#auth + */ + readonly auth: ClusterSecretStoreV1Beta1SpecProviderVaultAuth; + + /** + * PEM encoded CA bundle used to validate Vault server certificate. Only used + * if the Server URL is using HTTPS protocol. This parameter is ignored for + * plain HTTP protocol connection. If not set the system root certificates + * are used to validate the TLS connection. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVault#caBundle + */ + readonly caBundle?: string; + + /** + * The provider for the CA bundle to use to validate Vault server certificate. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVault#caProvider + */ + readonly caProvider?: ClusterSecretStoreV1Beta1SpecProviderVaultCaProvider; + + /** + * ForwardInconsistent tells Vault to forward read-after-write requests to the Vault + * leader instead of simply retrying within a loop. This can increase performance if + * the option is enabled serverside. + * https://www.vaultproject.io/docs/configuration/replication#allow_forwarding_via_header + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVault#forwardInconsistent + */ + readonly forwardInconsistent?: boolean; + + /** + * Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows + * Vault environments to support Secure Multi-tenancy. e.g: "ns1". + * More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVault#namespace + */ + readonly namespace?: string; + + /** + * Path is the mount path of the Vault KV backend endpoint, e.g: + * "secret". The v2 KV secret engine version specific "/data" path suffix + * for fetching secrets from Vault is optional and will be appended + * if not present in specified path. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVault#path + */ + readonly path?: string; + + /** + * ReadYourWrites ensures isolated read-after-write semantics by + * providing discovered cluster replication states in each request. + * More information about eventual consistency in Vault can be found here + * https://www.vaultproject.io/docs/enterprise/consistency + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVault#readYourWrites + */ + readonly readYourWrites?: boolean; + + /** + * Server is the connection address for the Vault server, e.g: "https://vault.example.com:8200". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVault#server + */ + readonly server: string; + + /** + * The configuration used for client side related TLS communication, when the Vault server + * requires mutual authentication. Only used if the Server URL is using HTTPS protocol. + * This parameter is ignored for plain HTTP protocol connection. + * It's worth noting this configuration is different from the "TLS certificates auth method", + * which is available under the `auth.cert` section. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVault#tls + */ + readonly tls?: ClusterSecretStoreV1Beta1SpecProviderVaultTls; + + /** + * Version is the Vault KV secret engine version. This can be either "v1" or + * "v2". Version defaults to "v2". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVault#version + */ + readonly version?: ClusterSecretStoreV1Beta1SpecProviderVaultVersion; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVault' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVault(obj: ClusterSecretStoreV1Beta1SpecProviderVault | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuth(obj.auth), + 'caBundle': obj.caBundle, + 'caProvider': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultCaProvider(obj.caProvider), + 'forwardInconsistent': obj.forwardInconsistent, + 'namespace': obj.namespace, + 'path': obj.path, + 'readYourWrites': obj.readYourWrites, + 'server': obj.server, + 'tls': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultTls(obj.tls), + 'version': obj.version, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Webhook configures this store to sync secrets using a generic templated webhook + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhook + */ +export interface ClusterSecretStoreV1Beta1SpecProviderWebhook { + /** + * Body + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhook#body + */ + readonly body?: string; + + /** + * PEM encoded CA bundle used to validate webhook server certificate. Only used + * if the Server URL is using HTTPS protocol. This parameter is ignored for + * plain HTTP protocol connection. If not set the system root certificates + * are used to validate the TLS connection. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhook#caBundle + */ + readonly caBundle?: string; + + /** + * The provider for the CA bundle to use to validate webhook server certificate. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhook#caProvider + */ + readonly caProvider?: ClusterSecretStoreV1Beta1SpecProviderWebhookCaProvider; + + /** + * Headers + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhook#headers + */ + readonly headers?: { [key: string]: string }; + + /** + * Webhook Method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhook#method + */ + readonly method?: string; + + /** + * Result formatting + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhook#result + */ + readonly result: ClusterSecretStoreV1Beta1SpecProviderWebhookResult; + + /** + * Secrets to fill in templates + * These secrets will be passed to the templating function as key value pairs under the given name + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhook#secrets + */ + readonly secrets?: ClusterSecretStoreV1Beta1SpecProviderWebhookSecrets[]; + + /** + * Timeout + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhook#timeout + */ + readonly timeout?: string; + + /** + * Webhook url to call + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhook#url + */ + readonly url: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderWebhook' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderWebhook(obj: ClusterSecretStoreV1Beta1SpecProviderWebhook | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'body': obj.body, + 'caBundle': obj.caBundle, + 'caProvider': toJson_ClusterSecretStoreV1Beta1SpecProviderWebhookCaProvider(obj.caProvider), + 'headers': ((obj.headers) === undefined) ? undefined : (Object.entries(obj.headers).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'method': obj.method, + 'result': toJson_ClusterSecretStoreV1Beta1SpecProviderWebhookResult(obj.result), + 'secrets': obj.secrets?.map(y => toJson_ClusterSecretStoreV1Beta1SpecProviderWebhookSecrets(y)), + 'timeout': obj.timeout, + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * YandexCertificateManager configures this store to sync secrets using Yandex Certificate Manager provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanager + */ +export interface ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanager { + /** + * Yandex.Cloud API endpoint (e.g. 'api.cloud.yandex.net:443') + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanager#apiEndpoint + */ + readonly apiEndpoint?: string; + + /** + * Auth defines the information necessary to authenticate against Yandex Certificate Manager + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanager#auth + */ + readonly auth: ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth; + + /** + * The provider for the CA bundle to use to validate Yandex.Cloud server certificate. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanager#caProvider + */ + readonly caProvider?: ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanager' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanager(obj: ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanager | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiEndpoint': obj.apiEndpoint, + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth(obj.auth), + 'caProvider': toJson_ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider(obj.caProvider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * YandexLockbox configures this store to sync secrets using Yandex Lockbox provider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockbox + */ +export interface ClusterSecretStoreV1Beta1SpecProviderYandexlockbox { + /** + * Yandex.Cloud API endpoint (e.g. 'api.cloud.yandex.net:443') + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockbox#apiEndpoint + */ + readonly apiEndpoint?: string; + + /** + * Auth defines the information necessary to authenticate against Yandex Lockbox + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockbox#auth + */ + readonly auth: ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuth; + + /** + * The provider for the CA bundle to use to validate Yandex.Cloud server certificate. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockbox#caProvider + */ + readonly caProvider?: ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProvider; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderYandexlockbox' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderYandexlockbox(obj: ClusterSecretStoreV1Beta1SpecProviderYandexlockbox | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiEndpoint': obj.apiEndpoint, + 'auth': toJson_ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuth(obj.auth), + 'caProvider': toJson_ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProvider(obj.caProvider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A label selector requirement is a selector that contains values, a key, and an operator that + * relates the key and values. + * + * @schema ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions + */ +export interface ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions { + /** + * key is the label key that the selector applies to. + * + * @schema ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions#key + */ + readonly key: string; + + /** + * operator represents a key's relationship to a set of values. + * Valid operators are In, NotIn, Exists and DoesNotExist. + * + * @schema ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions#operator + */ + readonly operator: string; + + /** + * 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. + * + * @schema ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions#values + */ + readonly values?: string[]; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions(obj: ClusterSecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'operator': obj.operator, + 'values': obj.values?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how the operator authenticates with Akeyless. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef { + /** + * Kubernetes authenticates with Akeyless by passing the ServiceAccount + * token stored in the named Secret resource. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef#kubernetesAuth + */ + readonly kubernetesAuth?: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth; + + /** + * Reference to a Secret that contains the details + * to authenticate with Akeyless. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kubernetesAuth': toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth(obj.kubernetesAuth), + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate Akeyless Gateway certificate. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessCaProvider + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAkeylessCaProvider { + /** + * The key where the CA certificate can be found in the Secret or ConfigMap. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * Can only be defined when used in a ClusterSecretStore. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessCaProvider#type + */ + readonly type: ClusterSecretStoreV1Beta1SpecProviderAkeylessCaProviderType; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAkeylessCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessCaProvider(obj: ClusterSecretStoreV1Beta1SpecProviderAkeylessCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AlibabaAuth contains a secretRef for credentials. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAlibabaAuth { + /** + * Authenticate against Alibaba using RRSA. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuth#rrsa + */ + readonly rrsa?: ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthRrsa; + + /** + * AlibabaAuthSecretRef holds secret references for Alibaba credentials. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuth#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAlibabaAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAlibabaAuth(obj: ClusterSecretStoreV1Beta1SpecProviderAlibabaAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'rrsa': toJson_ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthRrsa(obj.rrsa), + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against AWS + * if not set aws sdk will infer credentials from your environment + * see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAwsAuth { + /** + * Authenticate against AWS using service account tokens. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuth#jwt + */ + readonly jwt?: ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwt; + + /** + * AWSAuthSecretRef holds secret references for AWS credentials + * both AccessKeyID and SecretAccessKey must be defined in order to properly authenticate. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuth#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAwsAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAwsAuth(obj: ClusterSecretStoreV1Beta1SpecProviderAwsAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'jwt': toJson_ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwt(obj.jwt), + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretsManager defines how the provider behaves when interacting with AWS SecretsManager + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsSecretsManager + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAwsSecretsManager { + /** + * Specifies whether to delete the secret without any recovery window. You + * can't use both this parameter and RecoveryWindowInDays in the same call. + * If you don't use either, then by default Secrets Manager uses a 30 day + * recovery window. + * see: https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DeleteSecret.html#SecretsManager-DeleteSecret-request-ForceDeleteWithoutRecovery + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsSecretsManager#forceDeleteWithoutRecovery + */ + readonly forceDeleteWithoutRecovery?: boolean; + + /** + * The number of days from 7 to 30 that Secrets Manager waits before + * permanently deleting the secret. You can't use both this parameter and + * ForceDeleteWithoutRecovery in the same call. If you don't use either, + * then by default Secrets Manager uses a 30 day recovery window. + * see: https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DeleteSecret.html#SecretsManager-DeleteSecret-request-RecoveryWindowInDays + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsSecretsManager#recoveryWindowInDays + */ + readonly recoveryWindowInDays?: number; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAwsSecretsManager' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAwsSecretsManager(obj: ClusterSecretStoreV1Beta1SpecProviderAwsSecretsManager | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'forceDeleteWithoutRecovery': obj.forceDeleteWithoutRecovery, + 'recoveryWindowInDays': obj.recoveryWindowInDays, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Service defines which service should be used to fetch the secrets + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsService + */ +export enum ClusterSecretStoreV1Beta1SpecProviderAwsService { + /** SecretsManager */ + SECRETS_MANAGER = "SecretsManager", + /** ParameterStore */ + PARAMETER_STORE = "ParameterStore", +} + +/** + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsSessionTags + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAwsSessionTags { + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsSessionTags#key + */ + readonly key: string; + + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsSessionTags#value + */ + readonly value: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAwsSessionTags' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAwsSessionTags(obj: ClusterSecretStoreV1Beta1SpecProviderAwsSessionTags | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'value': obj.value, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how the operator authenticates with Azure. Required for ServicePrincipal auth type. Optional for WorkloadIdentity. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef { + /** + * The Azure clientId of the service principle or managed identity used for authentication. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef#clientId + */ + readonly clientId?: ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId; + + /** + * The Azure ClientSecret of the service principle used for authentication. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef#clientSecret + */ + readonly clientSecret?: ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret; + + /** + * The Azure tenantId of the managed identity used for authentication. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef#tenantId + */ + readonly tenantId?: ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientId': toJson_ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId(obj.clientId), + 'clientSecret': toJson_ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret(obj.clientSecret), + 'tenantId': toJson_ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId(obj.tenantId), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth type defines how to authenticate to the keyvault service. + * Valid values are: + * - "ServicePrincipal" (default): Using a service principal (tenantId, clientId, clientSecret) + * - "ManagedIdentity": Using Managed Identity assigned to the pod (see aad-pod-identity) + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthType + */ +export enum ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthType { + /** ServicePrincipal */ + SERVICE_PRINCIPAL = "ServicePrincipal", + /** ManagedIdentity */ + MANAGED_IDENTITY = "ManagedIdentity", + /** WorkloadIdentity */ + WORKLOAD_IDENTITY = "WorkloadIdentity", +} + +/** + * EnvironmentType specifies the Azure cloud environment endpoints to use for + * connecting and authenticating with Azure. By default it points to the public cloud AAD endpoint. + * The following endpoints are available, also see here: https://github.com/Azure/go-autorest/blob/main/autorest/azure/environments.go#L152 + * PublicCloud, USGovernmentCloud, ChinaCloud, GermanCloud + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvEnvironmentType + */ +export enum ClusterSecretStoreV1Beta1SpecProviderAzurekvEnvironmentType { + /** PublicCloud */ + PUBLIC_CLOUD = "PublicCloud", + /** USGovernmentCloud */ + US_GOVERNMENT_CLOUD = "USGovernmentCloud", + /** ChinaCloud */ + CHINA_CLOUD = "ChinaCloud", + /** GermanCloud */ + GERMAN_CLOUD = "GermanCloud", +} + +/** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef(obj: ClusterSecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against chef Server + * + * @schema ClusterSecretStoreV1Beta1SpecProviderChefAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderChefAuth { + /** + * ChefAuthSecretRef holds secret references for chef server login credentials. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderChefAuth#secretRef + */ + readonly secretRef: ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderChefAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderChefAuth(obj: ClusterSecretStoreV1Beta1SpecProviderChefAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderConjurAuth { + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuth#apikey + */ + readonly apikey?: ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikey; + + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuth#jwt + */ + readonly jwt?: ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwt; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderConjurAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderConjurAuth(obj: ClusterSecretStoreV1Beta1SpecProviderConjurAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apikey': toJson_ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikey(obj.apikey), + 'jwt': toJson_ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwt(obj.jwt), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to provide custom certificate authority (CA) certificates + * for a secret store. The CAProvider points to a Secret or ConfigMap resource + * that contains a PEM-encoded certificate. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurCaProvider + */ +export interface ClusterSecretStoreV1Beta1SpecProviderConjurCaProvider { + /** + * The key where the CA certificate can be found in the Secret or ConfigMap. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * Can only be defined when used in a ClusterSecretStore. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurCaProvider#type + */ + readonly type: ClusterSecretStoreV1Beta1SpecProviderConjurCaProviderType; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderConjurCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderConjurCaProvider(obj: ClusterSecretStoreV1Beta1SpecProviderConjurCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ClientID is the non-secret part of the credential. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelineaClientId + */ +export interface ClusterSecretStoreV1Beta1SpecProviderDelineaClientId { + /** + * SecretRef references a key in a secret that will be used as value. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelineaClientId#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef; + + /** + * Value can be specified directly to set a value without using a secret. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelineaClientId#value + */ + readonly value?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderDelineaClientId' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderDelineaClientId(obj: ClusterSecretStoreV1Beta1SpecProviderDelineaClientId | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef(obj.secretRef), + 'value': obj.value, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ClientSecret is the secret part of the credential. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecret + */ +export interface ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecret { + /** + * SecretRef references a key in a secret that will be used as value. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecret#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef; + + /** + * Value can be specified directly to set a value without using a secret. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecret#value + */ + readonly value?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecret' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecret(obj: ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecret | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef(obj.secretRef), + 'value': obj.value, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how the Operator authenticates with the Doppler API + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDopplerAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderDopplerAuth { + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderDopplerAuth#secretRef + */ + readonly secretRef: ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderDopplerAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderDopplerAuth(obj: ClusterSecretStoreV1Beta1SpecProviderDopplerAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Format enables the downloading of secrets as a file (string) + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDopplerFormat + */ +export enum ClusterSecretStoreV1Beta1SpecProviderDopplerFormat { + /** json */ + JSON = "json", + /** dotnet-json */ + DOTNET_HYPHEN_JSON = "dotnet-json", + /** env */ + ENV = "env", + /** yaml */ + YAML = "yaml", + /** docker */ + DOCKER = "docker", +} + +/** + * Environment variable compatible name transforms that change secret names to a different format + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDopplerNameTransformer + */ +export enum ClusterSecretStoreV1Beta1SpecProviderDopplerNameTransformer { + /** upper-camel */ + UPPER_HYPHEN_CAMEL = "upper-camel", + /** camel */ + CAMEL = "camel", + /** lower-snake */ + LOWER_HYPHEN_SNAKE = "lower-snake", + /** tf-var */ + TF_HYPHEN_VAR = "tf-var", + /** dotnet-env */ + DOTNET_HYPHEN_ENV = "dotnet-env", + /** lower-kebab */ + LOWER_HYPHEN_KEBAB = "lower-kebab", +} + +/** + * @schema ClusterSecretStoreV1Beta1SpecProviderFakeData + */ +export interface ClusterSecretStoreV1Beta1SpecProviderFakeData { + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderFakeData#key + */ + readonly key: string; + + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderFakeData#value + */ + readonly value?: string; + + /** + * Deprecated: ValueMap is deprecated and is intended to be removed in the future, use the `value` field instead. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderFakeData#valueMap + */ + readonly valueMap?: { [key: string]: string }; + + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderFakeData#version + */ + readonly version?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderFakeData' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderFakeData(obj: ClusterSecretStoreV1Beta1SpecProviderFakeData | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'value': obj.value, + 'valueMap': ((obj.valueMap) === undefined) ? undefined : (Object.entries(obj.valueMap).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'version': obj.version, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * APIKey is the API token to access SDKMS Applications. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderFortanixApiKey + */ +export interface ClusterSecretStoreV1Beta1SpecProviderFortanixApiKey { + /** + * SecretRef is a reference to a secret containing the SDKMS API Key. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderFortanixApiKey#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderFortanixApiKey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderFortanixApiKey(obj: ClusterSecretStoreV1Beta1SpecProviderFortanixApiKey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against GCP + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderGcpsmAuth { + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuth#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef; + + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuth#workloadIdentity + */ + readonly workloadIdentity?: ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderGcpsmAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderGcpsmAuth(obj: ClusterSecretStoreV1Beta1SpecProviderGcpsmAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef(obj.secretRef), + 'workloadIdentity': toJson_ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity(obj.workloadIdentity), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with a GitLab instance. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGitlabAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderGitlabAuth { + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderGitlabAuth#SecretRef + */ + readonly secretRef: ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderGitlabAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderGitlabAuth(obj: ClusterSecretStoreV1Beta1SpecProviderGitlabAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'SecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with the IBM secrets manager. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderIbmAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderIbmAuth { + /** + * IBM Container-based auth with IAM Trusted Profile. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderIbmAuth#containerAuth + */ + readonly containerAuth?: ClusterSecretStoreV1Beta1SpecProviderIbmAuthContainerAuth; + + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderIbmAuth#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderIbmAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderIbmAuth(obj: ClusterSecretStoreV1Beta1SpecProviderIbmAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'containerAuth': toJson_ClusterSecretStoreV1Beta1SpecProviderIbmAuthContainerAuth(obj.containerAuth), + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKeepersecurityAuthRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderKeepersecurityAuthRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKeepersecurityAuthRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKeepersecurityAuthRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKeepersecurityAuthRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderKeepersecurityAuthRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderKeepersecurityAuthRef(obj: ClusterSecretStoreV1Beta1SpecProviderKeepersecurityAuthRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with a Kubernetes instance. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderKubernetesAuth { + /** + * has both clientCert and clientKey as secretKeySelector + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuth#cert + */ + readonly cert?: ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCert; + + /** + * points to a service account that should be used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuth#serviceAccount + */ + readonly serviceAccount?: ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount; + + /** + * use static token to authenticate with + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuth#token + */ + readonly token?: ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthToken; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderKubernetesAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesAuth(obj: ClusterSecretStoreV1Beta1SpecProviderKubernetesAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'cert': toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCert(obj.cert), + 'serviceAccount': toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount(obj.serviceAccount), + 'token': toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthToken(obj.token), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * configures the Kubernetes server Address. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesServer + */ +export interface ClusterSecretStoreV1Beta1SpecProviderKubernetesServer { + /** + * CABundle is a base64-encoded CA certificate + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesServer#caBundle + */ + readonly caBundle?: string; + + /** + * see: https://external-secrets.io/v0.4.1/spec/#external-secrets.io/v1alpha1.CAProvider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesServer#caProvider + */ + readonly caProvider?: ClusterSecretStoreV1Beta1SpecProviderKubernetesServerCaProvider; + + /** + * configures the Kubernetes server Address. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesServer#url + */ + readonly url?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderKubernetesServer' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesServer(obj: ClusterSecretStoreV1Beta1SpecProviderKubernetesServer | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'caBundle': obj.caBundle, + 'caProvider': toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesServerCaProvider(obj.caProvider), + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how the Operator authenticates with the Onboardbase API + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuth { + /** + * OnboardbaseAPIKey is the APIKey generated by an admin account. + * It is used to recognize and authorize access to a project and environment within onboardbase + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuth#apiKeyRef + */ + readonly apiKeyRef: ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef; + + /** + * OnboardbasePasscode is the passcode attached to the API Key + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuth#passcodeRef + */ + readonly passcodeRef: ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuth(obj: ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiKeyRef': toJson_ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef(obj.apiKeyRef), + 'passcodeRef': toJson_ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef(obj.passcodeRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against OnePassword Connect Server + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuth { + /** + * OnePasswordAuthSecretRef holds secret references for 1Password credentials. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuth#secretRef + */ + readonly secretRef: ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuth(obj: ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with the Oracle Vault. + * If empty, use the instance principal, otherwise the user credentials specified in Auth. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderOracleAuth { + /** + * SecretRef to pass through sensitive information. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleAuth#secretRef + */ + readonly secretRef: ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRef; + + /** + * Tenancy is the tenancy OCID where user is located. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleAuth#tenancy + */ + readonly tenancy: string; + + /** + * User is an access OCID specific to the account. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleAuth#user + */ + readonly user: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderOracleAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderOracleAuth(obj: ClusterSecretStoreV1Beta1SpecProviderOracleAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRef(obj.secretRef), + 'tenancy': obj.tenancy, + 'user': obj.user, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of principal to use for authentication. If left blank, the Auth struct will + * determine the principal type. This optional field must be specified if using + * workload identity. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOraclePrincipalType + */ +export enum ClusterSecretStoreV1Beta1SpecProviderOraclePrincipalType { + /** UserPrincipal */ + USER_PRINCIPAL = "UserPrincipal", + /** InstancePrincipal */ + INSTANCE_PRINCIPAL = "InstancePrincipal", + /** Workload */ + WORKLOAD = "Workload", +} + +/** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleServiceAccountRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderOracleServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderOracleServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderOracleServiceAccountRef(obj: ClusterSecretStoreV1Beta1SpecProviderOracleServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against Passbolt Server + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassboltAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderPassboltAuth { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassboltAuth#passwordSecretRef + */ + readonly passwordSecretRef: ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassboltAuth#privateKeySecretRef + */ + readonly privateKeySecretRef: ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderPassboltAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderPassboltAuth(obj: ClusterSecretStoreV1Beta1SpecProviderPassboltAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'passwordSecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef(obj.passwordSecretRef), + 'privateKeySecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef(obj.privateKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with a Password Depot instance. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuth { + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuth#secretRef + */ + readonly secretRef: ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuth(obj: ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AccessToken is the access tokens to sign in to the Pulumi Cloud Console. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPulumiAccessToken + */ +export interface ClusterSecretStoreV1Beta1SpecProviderPulumiAccessToken { + /** + * SecretRef is a reference to a secret containing the Pulumi API token. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPulumiAccessToken#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderPulumiAccessToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderPulumiAccessToken(obj: ClusterSecretStoreV1Beta1SpecProviderPulumiAccessToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AccessKey is the non-secret part of the api key. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKey + */ +export interface ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKey { + /** + * SecretRef references a key in a secret that will be used as value. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKey#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef; + + /** + * Value can be specified directly to set a value without using a secret. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKey#value + */ + readonly value?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKey(obj: ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef(obj.secretRef), + 'value': obj.value, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretKey is the non-secret part of the api key. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKey + */ +export interface ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKey { + /** + * SecretRef references a key in a secret that will be used as value. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKey#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef; + + /** + * Value can be specified directly to set a value without using a secret. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKey#value + */ + readonly value?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKey(obj: ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef(obj.secretRef), + 'value': obj.value, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines parameters to authenticate in senhasegura + * + * @schema ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuth { + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuth#clientId + */ + readonly clientId: string; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuth#clientSecretSecretRef + */ + readonly clientSecretSecretRef: ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuth(obj: ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientId': obj.clientId, + 'clientSecretSecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef(obj.clientSecretSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with the Vault server. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuth { + /** + * AppRole authenticates with Vault using the App Role auth mechanism, + * with the role and secret stored in a Kubernetes Secret resource. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuth#appRole + */ + readonly appRole?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRole; + + /** + * Cert authenticates with TLS Certificates by passing client certificate, private key and ca certificate + * Cert authentication method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuth#cert + */ + readonly cert?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthCert; + + /** + * Iam authenticates with vault by passing a special AWS request signed with AWS IAM credentials + * AWS IAM authentication method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuth#iam + */ + readonly iam?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthIam; + + /** + * Jwt authenticates with Vault by passing role and JWT token using the + * JWT/OIDC authentication method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuth#jwt + */ + readonly jwt?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwt; + + /** + * Kubernetes authenticates with Vault by passing the ServiceAccount + * token stored in the named Secret resource to the Vault server. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuth#kubernetes + */ + readonly kubernetes?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetes; + + /** + * Ldap authenticates with Vault by passing username/password pair using + * the LDAP authentication method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuth#ldap + */ + readonly ldap?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdap; + + /** + * Name of the vault namespace to authenticate to. This can be different than the namespace your secret is in. + * Namespaces is a set of features within Vault Enterprise that allows + * Vault environments to support Secure Multi-tenancy. e.g: "ns1". + * More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces + * This will default to Vault.Namespace field if set, or empty otherwise + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuth#namespace + */ + readonly namespace?: string; + + /** + * TokenSecretRef authenticates with Vault by presenting a token. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuth#tokenSecretRef + */ + readonly tokenSecretRef?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef; + + /** + * UserPass authenticates with Vault by passing username/password pair + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuth#userPass + */ + readonly userPass?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPass; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuth(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'appRole': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRole(obj.appRole), + 'cert': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthCert(obj.cert), + 'iam': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthIam(obj.iam), + 'jwt': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwt(obj.jwt), + 'kubernetes': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetes(obj.kubernetes), + 'ldap': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdap(obj.ldap), + 'namespace': obj.namespace, + 'tokenSecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef(obj.tokenSecretRef), + 'userPass': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPass(obj.userPass), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate Vault server certificate. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultCaProvider + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultCaProvider { + /** + * The key where the CA certificate can be found in the Secret or ConfigMap. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * Can only be defined when used in a ClusterSecretStore. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultCaProvider#type + */ + readonly type: ClusterSecretStoreV1Beta1SpecProviderVaultCaProviderType; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultCaProvider(obj: ClusterSecretStoreV1Beta1SpecProviderVaultCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The configuration used for client side related TLS communication, when the Vault server + * requires mutual authentication. Only used if the Server URL is using HTTPS protocol. + * This parameter is ignored for plain HTTP protocol connection. + * It's worth noting this configuration is different from the "TLS certificates auth method", + * which is available under the `auth.cert` section. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultTls + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultTls { + /** + * CertSecretRef is a certificate added to the transport layer + * when communicating with the Vault server. + * If no key for the Secret is specified, external-secret will default to 'tls.crt'. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultTls#certSecretRef + */ + readonly certSecretRef?: ClusterSecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef; + + /** + * KeySecretRef to a key in a Secret resource containing client private key + * added to the transport layer when communicating with the Vault server. + * If no key for the Secret is specified, external-secret will default to 'tls.key'. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultTls#keySecretRef + */ + readonly keySecretRef?: ClusterSecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultTls' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultTls(obj: ClusterSecretStoreV1Beta1SpecProviderVaultTls | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'certSecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef(obj.certSecretRef), + 'keySecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef(obj.keySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Version is the Vault KV secret engine version. This can be either "v1" or + * "v2". Version defaults to "v2". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultVersion + */ +export enum ClusterSecretStoreV1Beta1SpecProviderVaultVersion { + /** v1 */ + V1 = "v1", + /** v2 */ + V2 = "v2", +} + +/** + * The provider for the CA bundle to use to validate webhook server certificate. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhookCaProvider + */ +export interface ClusterSecretStoreV1Beta1SpecProviderWebhookCaProvider { + /** + * The key the value inside of the provider type to use, only used with "Secret" type + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhookCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhookCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhookCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhookCaProvider#type + */ + readonly type: ClusterSecretStoreV1Beta1SpecProviderWebhookCaProviderType; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderWebhookCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderWebhookCaProvider(obj: ClusterSecretStoreV1Beta1SpecProviderWebhookCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Result formatting + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhookResult + */ +export interface ClusterSecretStoreV1Beta1SpecProviderWebhookResult { + /** + * Json path of return value + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhookResult#jsonPath + */ + readonly jsonPath?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderWebhookResult' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderWebhookResult(obj: ClusterSecretStoreV1Beta1SpecProviderWebhookResult | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'jsonPath': obj.jsonPath, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhookSecrets + */ +export interface ClusterSecretStoreV1Beta1SpecProviderWebhookSecrets { + /** + * Name of this secret in templates + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhookSecrets#name + */ + readonly name: string; + + /** + * Secret ref to fill in credentials + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhookSecrets#secretRef + */ + readonly secretRef: ClusterSecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderWebhookSecrets' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderWebhookSecrets(obj: ClusterSecretStoreV1Beta1SpecProviderWebhookSecrets | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'name': obj.name, + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against Yandex Certificate Manager + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth { + /** + * The authorized key used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth#authorizedKeySecretRef + */ + readonly authorizedKeySecretRef?: ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth(obj: ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'authorizedKeySecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef(obj.authorizedKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate Yandex.Cloud server certificate. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider + */ +export interface ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider#certSecretRef + */ + readonly certSecretRef?: ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider(obj: ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'certSecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef(obj.certSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against Yandex Lockbox + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuth { + /** + * The authorized key used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuth#authorizedKeySecretRef + */ + readonly authorizedKeySecretRef?: ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuth(obj: ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'authorizedKeySecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef(obj.authorizedKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate Yandex.Cloud server certificate. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProvider + */ +export interface ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProvider { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProvider#certSecretRef + */ + readonly certSecretRef?: ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProvider(obj: ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'certSecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef(obj.certSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Kubernetes authenticates with Akeyless by passing the ServiceAccount + * token stored in the named Secret resource. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth { + /** + * the Akeyless Kubernetes auth-method access-id + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth#accessID + */ + readonly accessId: string; + + /** + * Kubernetes-auth configuration name in Akeyless-Gateway + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth#k8sConfName + */ + readonly k8SConfName: string; + + /** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Akeyless. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef; + + /** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Akeyless. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth#serviceAccountRef + */ + readonly serviceAccountRef?: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth(obj: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessID': obj.accessId, + 'k8sConfName': obj.k8SConfName, + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef(obj.secretRef), + 'serviceAccountRef': toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Reference to a Secret that contains the details + * to authenticate with Akeyless. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef { + /** + * The SecretAccessID is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef#accessID + */ + readonly accessId?: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef#accessType + */ + readonly accessType?: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef#accessTypeParam + */ + readonly accessTypeParam?: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessID': toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId(obj.accessId), + 'accessType': toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType(obj.accessType), + 'accessTypeParam': toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam(obj.accessTypeParam), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessCaProviderType + */ +export enum ClusterSecretStoreV1Beta1SpecProviderAkeylessCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * Authenticate against Alibaba using RRSA. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthRrsa + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthRrsa { + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthRrsa#oidcProviderArn + */ + readonly oidcProviderArn: string; + + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthRrsa#oidcTokenFilePath + */ + readonly oidcTokenFilePath: string; + + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthRrsa#roleArn + */ + readonly roleArn: string; + + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthRrsa#sessionName + */ + readonly sessionName: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthRrsa' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthRrsa(obj: ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthRrsa | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'oidcProviderArn': obj.oidcProviderArn, + 'oidcTokenFilePath': obj.oidcTokenFilePath, + 'roleArn': obj.roleArn, + 'sessionName': obj.sessionName, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AlibabaAuthSecretRef holds secret references for Alibaba credentials. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef { + /** + * The AccessKeyID is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef#accessKeyIDSecretRef + */ + readonly accessKeyIdSecretRef: ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef; + + /** + * The AccessKeySecret is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef#accessKeySecretSecretRef + */ + readonly accessKeySecretSecretRef: ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessKeyIDSecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef(obj.accessKeyIdSecretRef), + 'accessKeySecretSecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef(obj.accessKeySecretSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Authenticate against AWS using service account tokens. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwt + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwt { + /** + * A reference to a ServiceAccount resource. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwt#serviceAccountRef + */ + readonly serviceAccountRef?: ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwt(obj: ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'serviceAccountRef': toJson_ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AWSAuthSecretRef holds secret references for AWS credentials + * both AccessKeyID and SecretAccessKey must be defined in order to properly authenticate. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRef { + /** + * The AccessKeyID is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRef#accessKeyIDSecretRef + */ + readonly accessKeyIdSecretRef?: ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef; + + /** + * The SecretAccessKey is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRef#secretAccessKeySecretRef + */ + readonly secretAccessKeySecretRef?: ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef; + + /** + * The SessionToken used for authentication + * This must be defined if AccessKeyID and SecretAccessKey are temporary credentials + * see: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRef#sessionTokenSecretRef + */ + readonly sessionTokenSecretRef?: ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessKeyIDSecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef(obj.accessKeyIdSecretRef), + 'secretAccessKeySecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef(obj.secretAccessKeySecretRef), + 'sessionTokenSecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef(obj.sessionTokenSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The Azure clientId of the service principle or managed identity used for authentication. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId(obj: ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The Azure ClientSecret of the service principle used for authentication. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret(obj: ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The Azure tenantId of the managed identity used for authentication. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId(obj: ClusterSecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ChefAuthSecretRef holds secret references for chef server login credentials. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRef { + /** + * SecretKey is the Signing Key in PEM format, used for authentication. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRef#privateKeySecretRef + */ + readonly privateKeySecretRef: ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'privateKeySecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef(obj.privateKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikey + */ +export interface ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikey { + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikey#account + */ + readonly account: string; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikey#apiKeyRef + */ + readonly apiKeyRef: ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikey#userRef + */ + readonly userRef: ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikey(obj: ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'account': obj.account, + 'apiKeyRef': toJson_ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef(obj.apiKeyRef), + 'userRef': toJson_ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef(obj.userRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwt + */ +export interface ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwt { + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwt#account + */ + readonly account: string; + + /** + * Optional HostID for JWT authentication. This may be used depending + * on how the Conjur JWT authenticator policy is configured. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwt#hostId + */ + readonly hostId?: string; + + /** + * Optional SecretRef that refers to a key in a Secret resource containing JWT token to + * authenticate with Conjur using the JWT authentication method. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwt#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef; + + /** + * Optional ServiceAccountRef specifies the Kubernetes service account for which to request + * a token for with the `TokenRequest` API. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwt#serviceAccountRef + */ + readonly serviceAccountRef?: ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef; + + /** + * The conjur authn jwt webservice id + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwt#serviceID + */ + readonly serviceId: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwt(obj: ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'account': obj.account, + 'hostId': obj.hostId, + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef(obj.secretRef), + 'serviceAccountRef': toJson_ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef(obj.serviceAccountRef), + 'serviceID': obj.serviceId, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurCaProviderType + */ +export enum ClusterSecretStoreV1Beta1SpecProviderConjurCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * SecretRef references a key in a secret that will be used as value. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef references a key in a secret that will be used as value. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRef { + /** + * The DopplerToken is used for authentication. + * See https://docs.doppler.com/reference/api#authentication for auth token types. + * The Key attribute defaults to dopplerToken if not specified. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRef#dopplerToken + */ + readonly dopplerToken: ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'dopplerToken': toJson_ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken(obj.dopplerToken), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef is a reference to a secret containing the SDKMS API Key. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef { + /** + * The SecretAccessKey is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef#secretAccessKeySecretRef + */ + readonly secretAccessKeySecretRef?: ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretAccessKeySecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef(obj.secretAccessKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity + */ +export interface ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity { + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity#clusterLocation + */ + readonly clusterLocation: string; + + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity#clusterName + */ + readonly clusterName: string; + + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity#clusterProjectID + */ + readonly clusterProjectId?: string; + + /** + * A reference to a ServiceAccount resource. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity#serviceAccountRef + */ + readonly serviceAccountRef: ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity(obj: ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clusterLocation': obj.clusterLocation, + 'clusterName': obj.clusterName, + 'clusterProjectID': obj.clusterProjectId, + 'serviceAccountRef': toJson_ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRef { + /** + * AccessToken is used for authentication. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRef#accessToken + */ + readonly accessToken?: ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessToken': toJson_ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken(obj.accessToken), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * IBM Container-based auth with IAM Trusted Profile. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderIbmAuthContainerAuth + */ +export interface ClusterSecretStoreV1Beta1SpecProviderIbmAuthContainerAuth { + /** + * @schema ClusterSecretStoreV1Beta1SpecProviderIbmAuthContainerAuth#iamEndpoint + */ + readonly iamEndpoint?: string; + + /** + * the IBM Trusted Profile + * + * @schema ClusterSecretStoreV1Beta1SpecProviderIbmAuthContainerAuth#profile + */ + readonly profile: string; + + /** + * Location the token is mounted on the pod + * + * @schema ClusterSecretStoreV1Beta1SpecProviderIbmAuthContainerAuth#tokenLocation + */ + readonly tokenLocation?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderIbmAuthContainerAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderIbmAuthContainerAuth(obj: ClusterSecretStoreV1Beta1SpecProviderIbmAuthContainerAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'iamEndpoint': obj.iamEndpoint, + 'profile': obj.profile, + 'tokenLocation': obj.tokenLocation, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRef { + /** + * The SecretAccessKey is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRef#secretApiKeySecretRef + */ + readonly secretApiKeySecretRef?: ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretApiKeySecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef(obj.secretApiKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * has both clientCert and clientKey as secretKeySelector + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCert + */ +export interface ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCert { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCert#clientCert + */ + readonly clientCert?: ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCert#clientKey + */ + readonly clientKey?: ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCert(obj: ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientCert': toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert(obj.clientCert), + 'clientKey': toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey(obj.clientKey), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * points to a service account that should be used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount + */ +export interface ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount(obj: ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * use static token to authenticate with + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthToken + */ +export interface ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthToken { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthToken#bearerToken + */ + readonly bearerToken?: ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthToken(obj: ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'bearerToken': toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken(obj.bearerToken), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * see: https://external-secrets.io/v0.4.1/spec/#external-secrets.io/v1alpha1.CAProvider + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesServerCaProvider + */ +export interface ClusterSecretStoreV1Beta1SpecProviderKubernetesServerCaProvider { + /** + * The key where the CA certificate can be found in the Secret or ConfigMap. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesServerCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesServerCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * Can only be defined when used in a ClusterSecretStore. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesServerCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesServerCaProvider#type + */ + readonly type: ClusterSecretStoreV1Beta1SpecProviderKubernetesServerCaProviderType; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderKubernetesServerCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesServerCaProvider(obj: ClusterSecretStoreV1Beta1SpecProviderKubernetesServerCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * OnboardbaseAPIKey is the APIKey generated by an admin account. + * It is used to recognize and authorize access to a project and environment within onboardbase + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef(obj: ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * OnboardbasePasscode is the passcode attached to the API Key + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef(obj: ClusterSecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * OnePasswordAuthSecretRef holds secret references for 1Password credentials. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef { + /** + * The ConnectToken is used for authentication to a 1Password Connect Server. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef#connectTokenSecretRef + */ + readonly connectTokenSecretRef: ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'connectTokenSecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef(obj.connectTokenSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to pass through sensitive information. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRef { + /** + * Fingerprint is the fingerprint of the API private key. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRef#fingerprint + */ + readonly fingerprint: ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint; + + /** + * PrivateKey is the user's API Signing Key in PEM format, used for authentication. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRef#privatekey + */ + readonly privatekey: ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'fingerprint': toJson_ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint(obj.fingerprint), + 'privatekey': toJson_ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey(obj.privatekey), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef { + /** + * Username / Password is used for authentication. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef#credentials + */ + readonly credentials?: ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'credentials': toJson_ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials(obj.credentials), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef is a reference to a secret containing the Pulumi API token. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef references a key in a secret that will be used as value. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef references a key in a secret that will be used as value. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AppRole authenticates with Vault using the App Role auth mechanism, + * with the role and secret stored in a Kubernetes Secret resource. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRole + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRole { + /** + * Path where the App Role authentication backend is mounted + * in Vault, e.g: "approle" + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRole#path + */ + readonly path: string; + + /** + * RoleID configured in the App Role authentication backend when setting + * up the authentication backend in Vault. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRole#roleId + */ + readonly roleId?: string; + + /** + * Reference to a key in a Secret that contains the App Role ID used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role id. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRole#roleRef + */ + readonly roleRef?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef; + + /** + * Reference to a key in a Secret that contains the App Role secret used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role secret. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRole#secretRef + */ + readonly secretRef: ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRole' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRole(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRole | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'path': obj.path, + 'roleId': obj.roleId, + 'roleRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef(obj.roleRef), + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Cert authenticates with TLS Certificates by passing client certificate, private key and ca certificate + * Cert authentication method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthCert + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthCert { + /** + * ClientCert is a certificate to authenticate using the Cert Vault + * authentication method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthCert#clientCert + */ + readonly clientCert?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertClientCert; + + /** + * SecretRef to a key in a Secret resource containing client private key to + * authenticate with Vault using the Cert authentication method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthCert#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthCert(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientCert': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertClientCert(obj.clientCert), + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Iam authenticates with vault by passing a special AWS request signed with AWS IAM credentials + * AWS IAM authentication method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIam + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthIam { + /** + * AWS External ID set on assumed IAM roles + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIam#externalID + */ + readonly externalId?: string; + + /** + * Specify a service account with IRSA enabled + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIam#jwt + */ + readonly jwt?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwt; + + /** + * Path where the AWS auth method is enabled in Vault, e.g: "aws" + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIam#path + */ + readonly path?: string; + + /** + * AWS region + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIam#region + */ + readonly region?: string; + + /** + * This is the AWS role to be assumed before talking to vault + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIam#role + */ + readonly role?: string; + + /** + * Specify credentials in a Secret object + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIam#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef; + + /** + * X-Vault-AWS-IAM-Server-ID is an additional header used by Vault IAM auth method to mitigate against different types of replay attacks. More details here: https://developer.hashicorp.com/vault/docs/auth/aws + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIam#vaultAwsIamServerID + */ + readonly vaultAwsIamServerId?: string; + + /** + * Vault Role. In vault, a role describes an identity with a set of permissions, groups, or policies you want to attach a user of the secrets engine + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIam#vaultRole + */ + readonly vaultRole: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthIam' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthIam(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthIam | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'externalID': obj.externalId, + 'jwt': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwt(obj.jwt), + 'path': obj.path, + 'region': obj.region, + 'role': obj.role, + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef(obj.secretRef), + 'vaultAwsIamServerID': obj.vaultAwsIamServerId, + 'vaultRole': obj.vaultRole, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Jwt authenticates with Vault by passing role and JWT token using the + * JWT/OIDC authentication method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwt + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwt { + /** + * Optional ServiceAccountToken specifies the Kubernetes service account for which to request + * a token for with the `TokenRequest` API. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwt#kubernetesServiceAccountToken + */ + readonly kubernetesServiceAccountToken?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken; + + /** + * Path where the JWT authentication backend is mounted + * in Vault, e.g: "jwt" + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwt#path + */ + readonly path: string; + + /** + * Role is a JWT role to authenticate using the JWT/OIDC Vault + * authentication method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwt#role + */ + readonly role?: string; + + /** + * Optional SecretRef that refers to a key in a Secret resource containing JWT token to + * authenticate with Vault using the JWT/OIDC authentication method. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwt#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwt(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kubernetesServiceAccountToken': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken(obj.kubernetesServiceAccountToken), + 'path': obj.path, + 'role': obj.role, + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Kubernetes authenticates with Vault by passing the ServiceAccount + * token stored in the named Secret resource to the Vault server. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetes + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetes { + /** + * Path where the Kubernetes authentication backend is mounted in Vault, e.g: + * "kubernetes" + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetes#mountPath + */ + readonly mountPath: string; + + /** + * A required field containing the Vault Role to assume. A Role binds a + * Kubernetes ServiceAccount with a set of Vault policies. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetes#role + */ + readonly role: string; + + /** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Vault. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetes#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef; + + /** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Vault. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetes#serviceAccountRef + */ + readonly serviceAccountRef?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetes' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetes(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetes | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'mountPath': obj.mountPath, + 'role': obj.role, + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef(obj.secretRef), + 'serviceAccountRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Ldap authenticates with Vault by passing username/password pair using + * the LDAP authentication method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdap + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdap { + /** + * Path where the LDAP authentication backend is mounted + * in Vault, e.g: "ldap" + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdap#path + */ + readonly path: string; + + /** + * SecretRef to a key in a Secret resource containing password for the LDAP + * user used to authenticate with Vault using the LDAP authentication + * method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdap#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef; + + /** + * Username is a LDAP user name used to authenticate using the LDAP Vault + * authentication method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdap#username + */ + readonly username: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdap' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdap(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdap | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'path': obj.path, + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef(obj.secretRef), + 'username': obj.username, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * TokenSecretRef authenticates with Vault by presenting a token. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * UserPass authenticates with Vault by passing username/password pair + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPass + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPass { + /** + * Path where the UserPassword authentication backend is mounted + * in Vault, e.g: "user" + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPass#path + */ + readonly path: string; + + /** + * SecretRef to a key in a Secret resource containing password for the + * user used to authenticate with Vault using the UserPass authentication + * method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPass#secretRef + */ + readonly secretRef?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef; + + /** + * Username is a user name used to authenticate using the UserPass Vault + * authentication method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPass#username + */ + readonly username: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPass' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPass(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPass | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'path': obj.path, + 'secretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef(obj.secretRef), + 'username': obj.username, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultCaProviderType + */ +export enum ClusterSecretStoreV1Beta1SpecProviderVaultCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * CertSecretRef is a certificate added to the transport layer + * when communicating with the Vault server. + * If no key for the Secret is specified, external-secret will default to 'tls.crt'. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * KeySecretRef to a key in a Secret resource containing client private key + * added to the transport layer when communicating with the Vault server. + * If no key for the Secret is specified, external-secret will default to 'tls.key'. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhookCaProviderType + */ +export enum ClusterSecretStoreV1Beta1SpecProviderWebhookCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * Secret ref to fill in credentials + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The authorized key used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The authorized key used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Akeyless. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Akeyless. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef(obj: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessID is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId(obj: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType(obj: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam(obj: ClusterSecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeyID is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeySecret is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a ServiceAccount resource. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef(obj: ClusterSecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeyID is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SessionToken used for authentication + * This must be defined if AccessKeyID and SecretAccessKey are temporary credentials + * see: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretKey is the Signing Key in PEM format, used for authentication. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef(obj: ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef(obj: ClusterSecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional SecretRef that refers to a key in a Secret resource containing JWT token to + * authenticate with Conjur using the JWT authentication method. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional ServiceAccountRef specifies the Kubernetes service account for which to request + * a token for with the `TokenRequest` API. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef(obj: ClusterSecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The DopplerToken is used for authentication. + * See https://docs.doppler.com/reference/api#authentication for auth token types. + * The Key attribute defaults to dopplerToken if not specified. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken + */ +export interface ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken(obj: ClusterSecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a ServiceAccount resource. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef(obj: ClusterSecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AccessToken is used for authentication. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken + */ +export interface ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken(obj: ClusterSecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert + */ +export interface ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert(obj: ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey + */ +export interface ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey(obj: ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken + */ +export interface ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken(obj: ClusterSecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema ClusterSecretStoreV1Beta1SpecProviderKubernetesServerCaProviderType + */ +export enum ClusterSecretStoreV1Beta1SpecProviderKubernetesServerCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * The ConnectToken is used for authentication to a 1Password Connect Server. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Fingerprint is the fingerprint of the API private key. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint + */ +export interface ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint(obj: ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * PrivateKey is the user's API Signing Key in PEM format, used for authentication. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey + */ +export interface ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey(obj: ClusterSecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Username / Password is used for authentication. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials + */ +export interface ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials(obj: ClusterSecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Reference to a key in a Secret that contains the App Role ID used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role id. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Reference to a key in a Secret that contains the App Role secret used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role secret. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ClientCert is a certificate to authenticate using the Cert Vault + * authentication method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertClientCert + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertClientCert { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertClientCert#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertClientCert#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertClientCert#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertClientCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertClientCert(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertClientCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to a key in a Secret resource containing client private key to + * authenticate with Vault using the Cert authentication method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Specify a service account with IRSA enabled + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwt + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwt { + /** + * A reference to a ServiceAccount resource. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwt#serviceAccountRef + */ + readonly serviceAccountRef?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwt(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'serviceAccountRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Specify credentials in a Secret object + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef { + /** + * The AccessKeyID is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef#accessKeyIDSecretRef + */ + readonly accessKeyIdSecretRef?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef; + + /** + * The SecretAccessKey is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef#secretAccessKeySecretRef + */ + readonly secretAccessKeySecretRef?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef; + + /** + * The SessionToken used for authentication + * This must be defined if AccessKeyID and SecretAccessKey are temporary credentials + * see: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef#sessionTokenSecretRef + */ + readonly sessionTokenSecretRef?: ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessKeyIDSecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef(obj.accessKeyIdSecretRef), + 'secretAccessKeySecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef(obj.secretAccessKeySecretRef), + 'sessionTokenSecretRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef(obj.sessionTokenSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional ServiceAccountToken specifies the Kubernetes service account for which to request + * a token for with the `TokenRequest` API. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken { + /** + * Optional audiences field that will be used to request a temporary Kubernetes service + * account token for the service account referenced by `serviceAccountRef`. + * Defaults to a single audience `vault` it not specified. + * Deprecated: use serviceAccountRef.Audiences instead + * + * @default a single audience `vault` it not specified. + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken#audiences + */ + readonly audiences?: string[]; + + /** + * Optional expiration time in seconds that will be used to request a temporary + * Kubernetes service account token for the service account referenced by + * `serviceAccountRef`. + * Deprecated: this will be removed in the future. + * Defaults to 10 minutes. + * + * @default 10 minutes. + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken#expirationSeconds + */ + readonly expirationSeconds?: number; + + /** + * Service account field containing the name of a kubernetes ServiceAccount. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken#serviceAccountRef + */ + readonly serviceAccountRef: ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'expirationSeconds': obj.expirationSeconds, + 'serviceAccountRef': toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional SecretRef that refers to a key in a Secret resource containing JWT token to + * authenticate with Vault using the JWT/OIDC authentication method. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Vault. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Vault. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to a key in a Secret resource containing password for the LDAP + * user used to authenticate with Vault using the LDAP authentication + * method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to a key in a Secret resource containing password for the + * user used to authenticate with Vault using the UserPass authentication + * method + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a ServiceAccount resource. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeyID is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SessionToken used for authentication + * This must be defined if AccessKeyID and SecretAccessKey are temporary credentials + * see: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Service account field containing the name of a kubernetes ServiceAccount. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef + */ +export interface ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef(obj: ClusterSecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * ExternalSecret is the Schema for the external-secrets API. + * + * @schema ExternalSecret + */ +export class ExternalSecret extends ApiObject { + /** + * Returns the apiVersion and kind for "ExternalSecret" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'external-secrets.io/v1alpha1', + kind: 'ExternalSecret', + } + + /** + * Renders a Kubernetes manifest for "ExternalSecret". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: ExternalSecretProps = {}): any { + return { + ...ExternalSecret.GVK, + ...toJson_ExternalSecretProps(props), + }; + } + + /** + * Defines a "ExternalSecret" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: ExternalSecretProps = {}) { + super(scope, id, { + ...ExternalSecret.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...ExternalSecret.GVK, + ...toJson_ExternalSecretProps(resolved), + }; + } +} + +/** + * ExternalSecret is the Schema for the external-secrets API. + * + * @schema ExternalSecret + */ +export interface ExternalSecretProps { + /** + * @schema ExternalSecret#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * ExternalSecretSpec defines the desired state of ExternalSecret. + * + * @schema ExternalSecret#spec + */ + readonly spec?: ExternalSecretSpec; + +} + +/** + * Converts an object of type 'ExternalSecretProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretProps(obj: ExternalSecretProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_ExternalSecretSpec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ExternalSecretSpec defines the desired state of ExternalSecret. + * + * @schema ExternalSecretSpec + */ +export interface ExternalSecretSpec { + /** + * Data defines the connection between the Kubernetes Secret keys and the Provider data + * + * @schema ExternalSecretSpec#data + */ + readonly data?: ExternalSecretSpecData[]; + + /** + * DataFrom is used to fetch all properties from a specific Provider data + * If multiple entries are specified, the Secret keys are merged in the specified order + * + * @schema ExternalSecretSpec#dataFrom + */ + readonly dataFrom?: ExternalSecretSpecDataFrom[]; + + /** + * RefreshInterval is the amount of time before the values are read again from the SecretStore provider + * Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h" + * May be set to zero to fetch and create it once. Defaults to 1h. + * + * @default 1h. + * @schema ExternalSecretSpec#refreshInterval + */ + readonly refreshInterval?: string; + + /** + * SecretStoreRef defines which SecretStore to fetch the ExternalSecret data. + * + * @schema ExternalSecretSpec#secretStoreRef + */ + readonly secretStoreRef: ExternalSecretSpecSecretStoreRef; + + /** + * ExternalSecretTarget defines the Kubernetes Secret to be created + * There can be only one target per ExternalSecret. + * + * @schema ExternalSecretSpec#target + */ + readonly target: ExternalSecretSpecTarget; + +} + +/** + * Converts an object of type 'ExternalSecretSpec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretSpec(obj: ExternalSecretSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'data': obj.data?.map(y => toJson_ExternalSecretSpecData(y)), + 'dataFrom': obj.dataFrom?.map(y => toJson_ExternalSecretSpecDataFrom(y)), + 'refreshInterval': obj.refreshInterval, + 'secretStoreRef': toJson_ExternalSecretSpecSecretStoreRef(obj.secretStoreRef), + 'target': toJson_ExternalSecretSpecTarget(obj.target), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ExternalSecretData defines the connection between the Kubernetes Secret key (spec.data.) and the Provider data. + * + * @schema ExternalSecretSpecData + */ +export interface ExternalSecretSpecData { + /** + * ExternalSecretDataRemoteRef defines Provider data location. + * + * @schema ExternalSecretSpecData#remoteRef + */ + readonly remoteRef: ExternalSecretSpecDataRemoteRef; + + /** + * @schema ExternalSecretSpecData#secretKey + */ + readonly secretKey: string; + +} + +/** + * Converts an object of type 'ExternalSecretSpecData' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretSpecData(obj: ExternalSecretSpecData | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'remoteRef': toJson_ExternalSecretSpecDataRemoteRef(obj.remoteRef), + 'secretKey': obj.secretKey, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ExternalSecretDataRemoteRef defines Provider data location. + * + * @schema ExternalSecretSpecDataFrom + */ +export interface ExternalSecretSpecDataFrom { + /** + * Used to define a conversion Strategy + * + * @schema ExternalSecretSpecDataFrom#conversionStrategy + */ + readonly conversionStrategy?: ExternalSecretSpecDataFromConversionStrategy; + + /** + * Key is the key used in the Provider, mandatory + * + * @schema ExternalSecretSpecDataFrom#key + */ + readonly key: string; + + /** + * Used to select a specific property of the Provider value (if a map), if supported + * + * @schema ExternalSecretSpecDataFrom#property + */ + readonly property?: string; + + /** + * Used to select a specific version of the Provider value, if supported + * + * @schema ExternalSecretSpecDataFrom#version + */ + readonly version?: string; + +} + +/** + * Converts an object of type 'ExternalSecretSpecDataFrom' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretSpecDataFrom(obj: ExternalSecretSpecDataFrom | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'conversionStrategy': obj.conversionStrategy, + 'key': obj.key, + 'property': obj.property, + 'version': obj.version, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretStoreRef defines which SecretStore to fetch the ExternalSecret data. + * + * @schema ExternalSecretSpecSecretStoreRef + */ +export interface ExternalSecretSpecSecretStoreRef { + /** + * Kind of the SecretStore resource (SecretStore or ClusterSecretStore) + * Defaults to `SecretStore` + * + * @default SecretStore` + * @schema ExternalSecretSpecSecretStoreRef#kind + */ + readonly kind?: string; + + /** + * Name of the SecretStore resource + * + * @schema ExternalSecretSpecSecretStoreRef#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ExternalSecretSpecSecretStoreRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretSpecSecretStoreRef(obj: ExternalSecretSpecSecretStoreRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kind': obj.kind, + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ExternalSecretTarget defines the Kubernetes Secret to be created + * There can be only one target per ExternalSecret. + * + * @schema ExternalSecretSpecTarget + */ +export interface ExternalSecretSpecTarget { + /** + * CreationPolicy defines rules on how to create the resulting Secret + * Defaults to 'Owner' + * + * @default Owner' + * @schema ExternalSecretSpecTarget#creationPolicy + */ + readonly creationPolicy?: ExternalSecretSpecTargetCreationPolicy; + + /** + * Immutable defines if the final secret will be immutable + * + * @schema ExternalSecretSpecTarget#immutable + */ + readonly immutable?: boolean; + + /** + * Name defines the name of the Secret resource to be managed + * This field is immutable + * Defaults to the .metadata.name of the ExternalSecret resource + * + * @default the .metadata.name of the ExternalSecret resource + * @schema ExternalSecretSpecTarget#name + */ + readonly name?: string; + + /** + * Template defines a blueprint for the created Secret resource. + * + * @schema ExternalSecretSpecTarget#template + */ + readonly template?: ExternalSecretSpecTargetTemplate; + +} + +/** + * Converts an object of type 'ExternalSecretSpecTarget' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretSpecTarget(obj: ExternalSecretSpecTarget | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'creationPolicy': obj.creationPolicy, + 'immutable': obj.immutable, + 'name': obj.name, + 'template': toJson_ExternalSecretSpecTargetTemplate(obj.template), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ExternalSecretDataRemoteRef defines Provider data location. + * + * @schema ExternalSecretSpecDataRemoteRef + */ +export interface ExternalSecretSpecDataRemoteRef { + /** + * Used to define a conversion Strategy + * + * @schema ExternalSecretSpecDataRemoteRef#conversionStrategy + */ + readonly conversionStrategy?: ExternalSecretSpecDataRemoteRefConversionStrategy; + + /** + * Key is the key used in the Provider, mandatory + * + * @schema ExternalSecretSpecDataRemoteRef#key + */ + readonly key: string; + + /** + * Used to select a specific property of the Provider value (if a map), if supported + * + * @schema ExternalSecretSpecDataRemoteRef#property + */ + readonly property?: string; + + /** + * Used to select a specific version of the Provider value, if supported + * + * @schema ExternalSecretSpecDataRemoteRef#version + */ + readonly version?: string; + +} + +/** + * Converts an object of type 'ExternalSecretSpecDataRemoteRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretSpecDataRemoteRef(obj: ExternalSecretSpecDataRemoteRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'conversionStrategy': obj.conversionStrategy, + 'key': obj.key, + 'property': obj.property, + 'version': obj.version, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to define a conversion Strategy + * + * @schema ExternalSecretSpecDataFromConversionStrategy + */ +export enum ExternalSecretSpecDataFromConversionStrategy { + /** Default */ + DEFAULT = "Default", + /** Unicode */ + UNICODE = "Unicode", +} + +/** + * CreationPolicy defines rules on how to create the resulting Secret + * Defaults to 'Owner' + * + * @default Owner' + * @schema ExternalSecretSpecTargetCreationPolicy + */ +export enum ExternalSecretSpecTargetCreationPolicy { + /** Owner */ + OWNER = "Owner", + /** Merge */ + MERGE = "Merge", + /** None */ + NONE = "None", +} + +/** + * Template defines a blueprint for the created Secret resource. + * + * @schema ExternalSecretSpecTargetTemplate + */ +export interface ExternalSecretSpecTargetTemplate { + /** + * @schema ExternalSecretSpecTargetTemplate#data + */ + readonly data?: { [key: string]: string }; + + /** + * EngineVersion specifies the template engine version + * that should be used to compile/execute the + * template specified in .data and .templateFrom[]. + * + * @schema ExternalSecretSpecTargetTemplate#engineVersion + */ + readonly engineVersion?: ExternalSecretSpecTargetTemplateEngineVersion; + + /** + * ExternalSecretTemplateMetadata defines metadata fields for the Secret blueprint. + * + * @schema ExternalSecretSpecTargetTemplate#metadata + */ + readonly metadata?: ExternalSecretSpecTargetTemplateMetadata; + + /** + * @schema ExternalSecretSpecTargetTemplate#templateFrom + */ + readonly templateFrom?: ExternalSecretSpecTargetTemplateTemplateFrom[]; + + /** + * @schema ExternalSecretSpecTargetTemplate#type + */ + readonly type?: string; + +} + +/** + * Converts an object of type 'ExternalSecretSpecTargetTemplate' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretSpecTargetTemplate(obj: ExternalSecretSpecTargetTemplate | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'data': ((obj.data) === undefined) ? undefined : (Object.entries(obj.data).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'engineVersion': obj.engineVersion, + 'metadata': toJson_ExternalSecretSpecTargetTemplateMetadata(obj.metadata), + 'templateFrom': obj.templateFrom?.map(y => toJson_ExternalSecretSpecTargetTemplateTemplateFrom(y)), + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to define a conversion Strategy + * + * @schema ExternalSecretSpecDataRemoteRefConversionStrategy + */ +export enum ExternalSecretSpecDataRemoteRefConversionStrategy { + /** Default */ + DEFAULT = "Default", + /** Unicode */ + UNICODE = "Unicode", +} + +/** + * EngineVersion specifies the template engine version + * that should be used to compile/execute the + * template specified in .data and .templateFrom[]. + * + * @schema ExternalSecretSpecTargetTemplateEngineVersion + */ +export enum ExternalSecretSpecTargetTemplateEngineVersion { + /** v1 */ + V1 = "v1", + /** v2 */ + V2 = "v2", +} + +/** + * ExternalSecretTemplateMetadata defines metadata fields for the Secret blueprint. + * + * @schema ExternalSecretSpecTargetTemplateMetadata + */ +export interface ExternalSecretSpecTargetTemplateMetadata { + /** + * @schema ExternalSecretSpecTargetTemplateMetadata#annotations + */ + readonly annotations?: { [key: string]: string }; + + /** + * @schema ExternalSecretSpecTargetTemplateMetadata#labels + */ + readonly labels?: { [key: string]: string }; + +} + +/** + * Converts an object of type 'ExternalSecretSpecTargetTemplateMetadata' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretSpecTargetTemplateMetadata(obj: ExternalSecretSpecTargetTemplateMetadata | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'annotations': ((obj.annotations) === undefined) ? undefined : (Object.entries(obj.annotations).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'labels': ((obj.labels) === undefined) ? undefined : (Object.entries(obj.labels).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ExternalSecretSpecTargetTemplateTemplateFrom + */ +export interface ExternalSecretSpecTargetTemplateTemplateFrom { + /** + * @schema ExternalSecretSpecTargetTemplateTemplateFrom#configMap + */ + readonly configMap?: ExternalSecretSpecTargetTemplateTemplateFromConfigMap; + + /** + * @schema ExternalSecretSpecTargetTemplateTemplateFrom#secret + */ + readonly secret?: ExternalSecretSpecTargetTemplateTemplateFromSecret; + +} + +/** + * Converts an object of type 'ExternalSecretSpecTargetTemplateTemplateFrom' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretSpecTargetTemplateTemplateFrom(obj: ExternalSecretSpecTargetTemplateTemplateFrom | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'configMap': toJson_ExternalSecretSpecTargetTemplateTemplateFromConfigMap(obj.configMap), + 'secret': toJson_ExternalSecretSpecTargetTemplateTemplateFromSecret(obj.secret), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ExternalSecretSpecTargetTemplateTemplateFromConfigMap + */ +export interface ExternalSecretSpecTargetTemplateTemplateFromConfigMap { + /** + * @schema ExternalSecretSpecTargetTemplateTemplateFromConfigMap#items + */ + readonly items: ExternalSecretSpecTargetTemplateTemplateFromConfigMapItems[]; + + /** + * @schema ExternalSecretSpecTargetTemplateTemplateFromConfigMap#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ExternalSecretSpecTargetTemplateTemplateFromConfigMap' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretSpecTargetTemplateTemplateFromConfigMap(obj: ExternalSecretSpecTargetTemplateTemplateFromConfigMap | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'items': obj.items?.map(y => toJson_ExternalSecretSpecTargetTemplateTemplateFromConfigMapItems(y)), + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ExternalSecretSpecTargetTemplateTemplateFromSecret + */ +export interface ExternalSecretSpecTargetTemplateTemplateFromSecret { + /** + * @schema ExternalSecretSpecTargetTemplateTemplateFromSecret#items + */ + readonly items: ExternalSecretSpecTargetTemplateTemplateFromSecretItems[]; + + /** + * @schema ExternalSecretSpecTargetTemplateTemplateFromSecret#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ExternalSecretSpecTargetTemplateTemplateFromSecret' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretSpecTargetTemplateTemplateFromSecret(obj: ExternalSecretSpecTargetTemplateTemplateFromSecret | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'items': obj.items?.map(y => toJson_ExternalSecretSpecTargetTemplateTemplateFromSecretItems(y)), + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ExternalSecretSpecTargetTemplateTemplateFromConfigMapItems + */ +export interface ExternalSecretSpecTargetTemplateTemplateFromConfigMapItems { + /** + * @schema ExternalSecretSpecTargetTemplateTemplateFromConfigMapItems#key + */ + readonly key: string; + +} + +/** + * Converts an object of type 'ExternalSecretSpecTargetTemplateTemplateFromConfigMapItems' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretSpecTargetTemplateTemplateFromConfigMapItems(obj: ExternalSecretSpecTargetTemplateTemplateFromConfigMapItems | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ExternalSecretSpecTargetTemplateTemplateFromSecretItems + */ +export interface ExternalSecretSpecTargetTemplateTemplateFromSecretItems { + /** + * @schema ExternalSecretSpecTargetTemplateTemplateFromSecretItems#key + */ + readonly key: string; + +} + +/** + * Converts an object of type 'ExternalSecretSpecTargetTemplateTemplateFromSecretItems' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretSpecTargetTemplateTemplateFromSecretItems(obj: ExternalSecretSpecTargetTemplateTemplateFromSecretItems | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * ExternalSecret is the Schema for the external-secrets API. + * + * @schema ExternalSecretV1Beta1 + */ +export class ExternalSecretV1Beta1 extends ApiObject { + /** + * Returns the apiVersion and kind for "ExternalSecretV1Beta1" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'external-secrets.io/v1beta1', + kind: 'ExternalSecret', + } + + /** + * Renders a Kubernetes manifest for "ExternalSecretV1Beta1". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: ExternalSecretV1Beta1Props = {}): any { + return { + ...ExternalSecretV1Beta1.GVK, + ...toJson_ExternalSecretV1Beta1Props(props), + }; + } + + /** + * Defines a "ExternalSecretV1Beta1" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: ExternalSecretV1Beta1Props = {}) { + super(scope, id, { + ...ExternalSecretV1Beta1.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...ExternalSecretV1Beta1.GVK, + ...toJson_ExternalSecretV1Beta1Props(resolved), + }; + } +} + +/** + * ExternalSecret is the Schema for the external-secrets API. + * + * @schema ExternalSecretV1Beta1 + */ +export interface ExternalSecretV1Beta1Props { + /** + * @schema ExternalSecretV1Beta1#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * ExternalSecretSpec defines the desired state of ExternalSecret. + * + * @schema ExternalSecretV1Beta1#spec + */ + readonly spec?: ExternalSecretV1Beta1Spec; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1Props' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1Props(obj: ExternalSecretV1Beta1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_ExternalSecretV1Beta1Spec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ExternalSecretSpec defines the desired state of ExternalSecret. + * + * @schema ExternalSecretV1Beta1Spec + */ +export interface ExternalSecretV1Beta1Spec { + /** + * Data defines the connection between the Kubernetes Secret keys and the Provider data + * + * @schema ExternalSecretV1Beta1Spec#data + */ + readonly data?: ExternalSecretV1Beta1SpecData[]; + + /** + * DataFrom is used to fetch all properties from a specific Provider data + * If multiple entries are specified, the Secret keys are merged in the specified order + * + * @schema ExternalSecretV1Beta1Spec#dataFrom + */ + readonly dataFrom?: ExternalSecretV1Beta1SpecDataFrom[]; + + /** + * RefreshInterval is the amount of time before the values are read again from the SecretStore provider + * Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h" + * May be set to zero to fetch and create it once. Defaults to 1h. + * + * @default 1h. + * @schema ExternalSecretV1Beta1Spec#refreshInterval + */ + readonly refreshInterval?: string; + + /** + * SecretStoreRef defines which SecretStore to fetch the ExternalSecret data. + * + * @schema ExternalSecretV1Beta1Spec#secretStoreRef + */ + readonly secretStoreRef?: ExternalSecretV1Beta1SpecSecretStoreRef; + + /** + * ExternalSecretTarget defines the Kubernetes Secret to be created + * There can be only one target per ExternalSecret. + * + * @schema ExternalSecretV1Beta1Spec#target + */ + readonly target?: ExternalSecretV1Beta1SpecTarget; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1Spec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1Spec(obj: ExternalSecretV1Beta1Spec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'data': obj.data?.map(y => toJson_ExternalSecretV1Beta1SpecData(y)), + 'dataFrom': obj.dataFrom?.map(y => toJson_ExternalSecretV1Beta1SpecDataFrom(y)), + 'refreshInterval': obj.refreshInterval, + 'secretStoreRef': toJson_ExternalSecretV1Beta1SpecSecretStoreRef(obj.secretStoreRef), + 'target': toJson_ExternalSecretV1Beta1SpecTarget(obj.target), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ExternalSecretData defines the connection between the Kubernetes Secret key (spec.data.) and the Provider data. + * + * @schema ExternalSecretV1Beta1SpecData + */ +export interface ExternalSecretV1Beta1SpecData { + /** + * RemoteRef points to the remote secret and defines + * which secret (version/property/..) to fetch. + * + * @schema ExternalSecretV1Beta1SpecData#remoteRef + */ + readonly remoteRef: ExternalSecretV1Beta1SpecDataRemoteRef; + + /** + * SecretKey defines the key in which the controller stores + * the value. This is the key in the Kind=Secret + * + * @schema ExternalSecretV1Beta1SpecData#secretKey + */ + readonly secretKey: string; + + /** + * SourceRef allows you to override the source + * from which the value will pulled from. + * + * @schema ExternalSecretV1Beta1SpecData#sourceRef + */ + readonly sourceRef?: ExternalSecretV1Beta1SpecDataSourceRef; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecData' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecData(obj: ExternalSecretV1Beta1SpecData | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'remoteRef': toJson_ExternalSecretV1Beta1SpecDataRemoteRef(obj.remoteRef), + 'secretKey': obj.secretKey, + 'sourceRef': toJson_ExternalSecretV1Beta1SpecDataSourceRef(obj.sourceRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ExternalSecretV1Beta1SpecDataFrom + */ +export interface ExternalSecretV1Beta1SpecDataFrom { + /** + * Used to extract multiple key/value pairs from one secret + * Note: Extract does not support sourceRef.Generator or sourceRef.GeneratorRef. + * + * @schema ExternalSecretV1Beta1SpecDataFrom#extract + */ + readonly extract?: ExternalSecretV1Beta1SpecDataFromExtract; + + /** + * Used to find secrets based on tags or regular expressions + * Note: Find does not support sourceRef.Generator or sourceRef.GeneratorRef. + * + * @schema ExternalSecretV1Beta1SpecDataFrom#find + */ + readonly find?: ExternalSecretV1Beta1SpecDataFromFind; + + /** + * Used to rewrite secret Keys after getting them from the secret Provider + * Multiple Rewrite operations can be provided. They are applied in a layered order (first to last) + * + * @schema ExternalSecretV1Beta1SpecDataFrom#rewrite + */ + readonly rewrite?: ExternalSecretV1Beta1SpecDataFromRewrite[]; + + /** + * SourceRef points to a store or generator + * which contains secret values ready to use. + * Use this in combination with Extract or Find pull values out of + * a specific SecretStore. + * When sourceRef points to a generator Extract or Find is not supported. + * The generator returns a static map of values + * + * @schema ExternalSecretV1Beta1SpecDataFrom#sourceRef + */ + readonly sourceRef?: ExternalSecretV1Beta1SpecDataFromSourceRef; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecDataFrom' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecDataFrom(obj: ExternalSecretV1Beta1SpecDataFrom | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'extract': toJson_ExternalSecretV1Beta1SpecDataFromExtract(obj.extract), + 'find': toJson_ExternalSecretV1Beta1SpecDataFromFind(obj.find), + 'rewrite': obj.rewrite?.map(y => toJson_ExternalSecretV1Beta1SpecDataFromRewrite(y)), + 'sourceRef': toJson_ExternalSecretV1Beta1SpecDataFromSourceRef(obj.sourceRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretStoreRef defines which SecretStore to fetch the ExternalSecret data. + * + * @schema ExternalSecretV1Beta1SpecSecretStoreRef + */ +export interface ExternalSecretV1Beta1SpecSecretStoreRef { + /** + * Kind of the SecretStore resource (SecretStore or ClusterSecretStore) + * Defaults to `SecretStore` + * + * @default SecretStore` + * @schema ExternalSecretV1Beta1SpecSecretStoreRef#kind + */ + readonly kind?: string; + + /** + * Name of the SecretStore resource + * + * @schema ExternalSecretV1Beta1SpecSecretStoreRef#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecSecretStoreRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecSecretStoreRef(obj: ExternalSecretV1Beta1SpecSecretStoreRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kind': obj.kind, + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ExternalSecretTarget defines the Kubernetes Secret to be created + * There can be only one target per ExternalSecret. + * + * @schema ExternalSecretV1Beta1SpecTarget + */ +export interface ExternalSecretV1Beta1SpecTarget { + /** + * CreationPolicy defines rules on how to create the resulting Secret + * Defaults to 'Owner' + * + * @default Owner' + * @schema ExternalSecretV1Beta1SpecTarget#creationPolicy + */ + readonly creationPolicy?: ExternalSecretV1Beta1SpecTargetCreationPolicy; + + /** + * DeletionPolicy defines rules on how to delete the resulting Secret + * Defaults to 'Retain' + * + * @default Retain' + * @schema ExternalSecretV1Beta1SpecTarget#deletionPolicy + */ + readonly deletionPolicy?: ExternalSecretV1Beta1SpecTargetDeletionPolicy; + + /** + * Immutable defines if the final secret will be immutable + * + * @schema ExternalSecretV1Beta1SpecTarget#immutable + */ + readonly immutable?: boolean; + + /** + * Name defines the name of the Secret resource to be managed + * This field is immutable + * Defaults to the .metadata.name of the ExternalSecret resource + * + * @default the .metadata.name of the ExternalSecret resource + * @schema ExternalSecretV1Beta1SpecTarget#name + */ + readonly name?: string; + + /** + * Template defines a blueprint for the created Secret resource. + * + * @schema ExternalSecretV1Beta1SpecTarget#template + */ + readonly template?: ExternalSecretV1Beta1SpecTargetTemplate; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecTarget' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecTarget(obj: ExternalSecretV1Beta1SpecTarget | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'creationPolicy': obj.creationPolicy, + 'deletionPolicy': obj.deletionPolicy, + 'immutable': obj.immutable, + 'name': obj.name, + 'template': toJson_ExternalSecretV1Beta1SpecTargetTemplate(obj.template), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * RemoteRef points to the remote secret and defines + * which secret (version/property/..) to fetch. + * + * @schema ExternalSecretV1Beta1SpecDataRemoteRef + */ +export interface ExternalSecretV1Beta1SpecDataRemoteRef { + /** + * Used to define a conversion Strategy + * + * @schema ExternalSecretV1Beta1SpecDataRemoteRef#conversionStrategy + */ + readonly conversionStrategy?: ExternalSecretV1Beta1SpecDataRemoteRefConversionStrategy; + + /** + * Used to define a decoding Strategy + * + * @schema ExternalSecretV1Beta1SpecDataRemoteRef#decodingStrategy + */ + readonly decodingStrategy?: ExternalSecretV1Beta1SpecDataRemoteRefDecodingStrategy; + + /** + * Key is the key used in the Provider, mandatory + * + * @schema ExternalSecretV1Beta1SpecDataRemoteRef#key + */ + readonly key: string; + + /** + * Policy for fetching tags/labels from provider secrets, possible options are Fetch, None. Defaults to None + * + * @default None + * @schema ExternalSecretV1Beta1SpecDataRemoteRef#metadataPolicy + */ + readonly metadataPolicy?: ExternalSecretV1Beta1SpecDataRemoteRefMetadataPolicy; + + /** + * Used to select a specific property of the Provider value (if a map), if supported + * + * @schema ExternalSecretV1Beta1SpecDataRemoteRef#property + */ + readonly property?: string; + + /** + * Used to select a specific version of the Provider value, if supported + * + * @schema ExternalSecretV1Beta1SpecDataRemoteRef#version + */ + readonly version?: string; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecDataRemoteRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecDataRemoteRef(obj: ExternalSecretV1Beta1SpecDataRemoteRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'conversionStrategy': obj.conversionStrategy, + 'decodingStrategy': obj.decodingStrategy, + 'key': obj.key, + 'metadataPolicy': obj.metadataPolicy, + 'property': obj.property, + 'version': obj.version, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SourceRef allows you to override the source + * from which the value will pulled from. + * + * @schema ExternalSecretV1Beta1SpecDataSourceRef + */ +export interface ExternalSecretV1Beta1SpecDataSourceRef { + /** + * GeneratorRef points to a generator custom resource. + * + * + * Deprecated: The generatorRef is not implemented in .data[]. + * this will be removed with v1. + * + * @schema ExternalSecretV1Beta1SpecDataSourceRef#generatorRef + */ + readonly generatorRef?: ExternalSecretV1Beta1SpecDataSourceRefGeneratorRef; + + /** + * SecretStoreRef defines which SecretStore to fetch the ExternalSecret data. + * + * @schema ExternalSecretV1Beta1SpecDataSourceRef#storeRef + */ + readonly storeRef?: ExternalSecretV1Beta1SpecDataSourceRefStoreRef; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecDataSourceRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecDataSourceRef(obj: ExternalSecretV1Beta1SpecDataSourceRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'generatorRef': toJson_ExternalSecretV1Beta1SpecDataSourceRefGeneratorRef(obj.generatorRef), + 'storeRef': toJson_ExternalSecretV1Beta1SpecDataSourceRefStoreRef(obj.storeRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to extract multiple key/value pairs from one secret + * Note: Extract does not support sourceRef.Generator or sourceRef.GeneratorRef. + * + * @schema ExternalSecretV1Beta1SpecDataFromExtract + */ +export interface ExternalSecretV1Beta1SpecDataFromExtract { + /** + * Used to define a conversion Strategy + * + * @schema ExternalSecretV1Beta1SpecDataFromExtract#conversionStrategy + */ + readonly conversionStrategy?: ExternalSecretV1Beta1SpecDataFromExtractConversionStrategy; + + /** + * Used to define a decoding Strategy + * + * @schema ExternalSecretV1Beta1SpecDataFromExtract#decodingStrategy + */ + readonly decodingStrategy?: ExternalSecretV1Beta1SpecDataFromExtractDecodingStrategy; + + /** + * Key is the key used in the Provider, mandatory + * + * @schema ExternalSecretV1Beta1SpecDataFromExtract#key + */ + readonly key: string; + + /** + * Policy for fetching tags/labels from provider secrets, possible options are Fetch, None. Defaults to None + * + * @default None + * @schema ExternalSecretV1Beta1SpecDataFromExtract#metadataPolicy + */ + readonly metadataPolicy?: ExternalSecretV1Beta1SpecDataFromExtractMetadataPolicy; + + /** + * Used to select a specific property of the Provider value (if a map), if supported + * + * @schema ExternalSecretV1Beta1SpecDataFromExtract#property + */ + readonly property?: string; + + /** + * Used to select a specific version of the Provider value, if supported + * + * @schema ExternalSecretV1Beta1SpecDataFromExtract#version + */ + readonly version?: string; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecDataFromExtract' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecDataFromExtract(obj: ExternalSecretV1Beta1SpecDataFromExtract | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'conversionStrategy': obj.conversionStrategy, + 'decodingStrategy': obj.decodingStrategy, + 'key': obj.key, + 'metadataPolicy': obj.metadataPolicy, + 'property': obj.property, + 'version': obj.version, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to find secrets based on tags or regular expressions + * Note: Find does not support sourceRef.Generator or sourceRef.GeneratorRef. + * + * @schema ExternalSecretV1Beta1SpecDataFromFind + */ +export interface ExternalSecretV1Beta1SpecDataFromFind { + /** + * Used to define a conversion Strategy + * + * @schema ExternalSecretV1Beta1SpecDataFromFind#conversionStrategy + */ + readonly conversionStrategy?: ExternalSecretV1Beta1SpecDataFromFindConversionStrategy; + + /** + * Used to define a decoding Strategy + * + * @schema ExternalSecretV1Beta1SpecDataFromFind#decodingStrategy + */ + readonly decodingStrategy?: ExternalSecretV1Beta1SpecDataFromFindDecodingStrategy; + + /** + * Finds secrets based on the name. + * + * @schema ExternalSecretV1Beta1SpecDataFromFind#name + */ + readonly name?: ExternalSecretV1Beta1SpecDataFromFindName; + + /** + * A root path to start the find operations. + * + * @schema ExternalSecretV1Beta1SpecDataFromFind#path + */ + readonly path?: string; + + /** + * Find secrets based on tags. + * + * @schema ExternalSecretV1Beta1SpecDataFromFind#tags + */ + readonly tags?: { [key: string]: string }; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecDataFromFind' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecDataFromFind(obj: ExternalSecretV1Beta1SpecDataFromFind | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'conversionStrategy': obj.conversionStrategy, + 'decodingStrategy': obj.decodingStrategy, + 'name': toJson_ExternalSecretV1Beta1SpecDataFromFindName(obj.name), + 'path': obj.path, + 'tags': ((obj.tags) === undefined) ? undefined : (Object.entries(obj.tags).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ExternalSecretV1Beta1SpecDataFromRewrite + */ +export interface ExternalSecretV1Beta1SpecDataFromRewrite { + /** + * Used to rewrite with regular expressions. + * The resulting key will be the output of a regexp.ReplaceAll operation. + * + * @schema ExternalSecretV1Beta1SpecDataFromRewrite#regexp + */ + readonly regexp?: ExternalSecretV1Beta1SpecDataFromRewriteRegexp; + + /** + * Used to apply string transformation on the secrets. + * The resulting key will be the output of the template applied by the operation. + * + * @schema ExternalSecretV1Beta1SpecDataFromRewrite#transform + */ + readonly transform?: ExternalSecretV1Beta1SpecDataFromRewriteTransform; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecDataFromRewrite' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecDataFromRewrite(obj: ExternalSecretV1Beta1SpecDataFromRewrite | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'regexp': toJson_ExternalSecretV1Beta1SpecDataFromRewriteRegexp(obj.regexp), + 'transform': toJson_ExternalSecretV1Beta1SpecDataFromRewriteTransform(obj.transform), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SourceRef points to a store or generator + * which contains secret values ready to use. + * Use this in combination with Extract or Find pull values out of + * a specific SecretStore. + * When sourceRef points to a generator Extract or Find is not supported. + * The generator returns a static map of values + * + * @schema ExternalSecretV1Beta1SpecDataFromSourceRef + */ +export interface ExternalSecretV1Beta1SpecDataFromSourceRef { + /** + * GeneratorRef points to a generator custom resource. + * + * @schema ExternalSecretV1Beta1SpecDataFromSourceRef#generatorRef + */ + readonly generatorRef?: ExternalSecretV1Beta1SpecDataFromSourceRefGeneratorRef; + + /** + * SecretStoreRef defines which SecretStore to fetch the ExternalSecret data. + * + * @schema ExternalSecretV1Beta1SpecDataFromSourceRef#storeRef + */ + readonly storeRef?: ExternalSecretV1Beta1SpecDataFromSourceRefStoreRef; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecDataFromSourceRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecDataFromSourceRef(obj: ExternalSecretV1Beta1SpecDataFromSourceRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'generatorRef': toJson_ExternalSecretV1Beta1SpecDataFromSourceRefGeneratorRef(obj.generatorRef), + 'storeRef': toJson_ExternalSecretV1Beta1SpecDataFromSourceRefStoreRef(obj.storeRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * CreationPolicy defines rules on how to create the resulting Secret + * Defaults to 'Owner' + * + * @default Owner' + * @schema ExternalSecretV1Beta1SpecTargetCreationPolicy + */ +export enum ExternalSecretV1Beta1SpecTargetCreationPolicy { + /** Owner */ + OWNER = "Owner", + /** Orphan */ + ORPHAN = "Orphan", + /** Merge */ + MERGE = "Merge", + /** None */ + NONE = "None", +} + +/** + * DeletionPolicy defines rules on how to delete the resulting Secret + * Defaults to 'Retain' + * + * @default Retain' + * @schema ExternalSecretV1Beta1SpecTargetDeletionPolicy + */ +export enum ExternalSecretV1Beta1SpecTargetDeletionPolicy { + /** Delete */ + DELETE = "Delete", + /** Merge */ + MERGE = "Merge", + /** Retain */ + RETAIN = "Retain", +} + +/** + * Template defines a blueprint for the created Secret resource. + * + * @schema ExternalSecretV1Beta1SpecTargetTemplate + */ +export interface ExternalSecretV1Beta1SpecTargetTemplate { + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplate#data + */ + readonly data?: { [key: string]: string }; + + /** + * EngineVersion specifies the template engine version + * that should be used to compile/execute the + * template specified in .data and .templateFrom[]. + * + * @schema ExternalSecretV1Beta1SpecTargetTemplate#engineVersion + */ + readonly engineVersion?: ExternalSecretV1Beta1SpecTargetTemplateEngineVersion; + + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplate#mergePolicy + */ + readonly mergePolicy?: ExternalSecretV1Beta1SpecTargetTemplateMergePolicy; + + /** + * ExternalSecretTemplateMetadata defines metadata fields for the Secret blueprint. + * + * @schema ExternalSecretV1Beta1SpecTargetTemplate#metadata + */ + readonly metadata?: ExternalSecretV1Beta1SpecTargetTemplateMetadata; + + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplate#templateFrom + */ + readonly templateFrom?: ExternalSecretV1Beta1SpecTargetTemplateTemplateFrom[]; + + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplate#type + */ + readonly type?: string; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecTargetTemplate' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecTargetTemplate(obj: ExternalSecretV1Beta1SpecTargetTemplate | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'data': ((obj.data) === undefined) ? undefined : (Object.entries(obj.data).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'engineVersion': obj.engineVersion, + 'mergePolicy': obj.mergePolicy, + 'metadata': toJson_ExternalSecretV1Beta1SpecTargetTemplateMetadata(obj.metadata), + 'templateFrom': obj.templateFrom?.map(y => toJson_ExternalSecretV1Beta1SpecTargetTemplateTemplateFrom(y)), + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to define a conversion Strategy + * + * @schema ExternalSecretV1Beta1SpecDataRemoteRefConversionStrategy + */ +export enum ExternalSecretV1Beta1SpecDataRemoteRefConversionStrategy { + /** Default */ + DEFAULT = "Default", + /** Unicode */ + UNICODE = "Unicode", +} + +/** + * Used to define a decoding Strategy + * + * @schema ExternalSecretV1Beta1SpecDataRemoteRefDecodingStrategy + */ +export enum ExternalSecretV1Beta1SpecDataRemoteRefDecodingStrategy { + /** Auto */ + AUTO = "Auto", + /** Base64 */ + BASE64 = "Base64", + /** Base64URL */ + BASE64_URL = "Base64URL", + /** None */ + NONE = "None", +} + +/** + * Policy for fetching tags/labels from provider secrets, possible options are Fetch, None. Defaults to None + * + * @default None + * @schema ExternalSecretV1Beta1SpecDataRemoteRefMetadataPolicy + */ +export enum ExternalSecretV1Beta1SpecDataRemoteRefMetadataPolicy { + /** None */ + NONE = "None", + /** Fetch */ + FETCH = "Fetch", +} + +/** + * GeneratorRef points to a generator custom resource. + * + * + * Deprecated: The generatorRef is not implemented in .data[]. + * this will be removed with v1. + * + * @schema ExternalSecretV1Beta1SpecDataSourceRefGeneratorRef + */ +export interface ExternalSecretV1Beta1SpecDataSourceRefGeneratorRef { + /** + * Specify the apiVersion of the generator resource + * + * @schema ExternalSecretV1Beta1SpecDataSourceRefGeneratorRef#apiVersion + */ + readonly apiVersion?: string; + + /** + * Specify the Kind of the resource, e.g. Password, ACRAccessToken etc. + * + * @schema ExternalSecretV1Beta1SpecDataSourceRefGeneratorRef#kind + */ + readonly kind: string; + + /** + * Specify the name of the generator resource + * + * @schema ExternalSecretV1Beta1SpecDataSourceRefGeneratorRef#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecDataSourceRefGeneratorRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecDataSourceRefGeneratorRef(obj: ExternalSecretV1Beta1SpecDataSourceRefGeneratorRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiVersion': obj.apiVersion, + 'kind': obj.kind, + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretStoreRef defines which SecretStore to fetch the ExternalSecret data. + * + * @schema ExternalSecretV1Beta1SpecDataSourceRefStoreRef + */ +export interface ExternalSecretV1Beta1SpecDataSourceRefStoreRef { + /** + * Kind of the SecretStore resource (SecretStore or ClusterSecretStore) + * Defaults to `SecretStore` + * + * @default SecretStore` + * @schema ExternalSecretV1Beta1SpecDataSourceRefStoreRef#kind + */ + readonly kind?: string; + + /** + * Name of the SecretStore resource + * + * @schema ExternalSecretV1Beta1SpecDataSourceRefStoreRef#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecDataSourceRefStoreRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecDataSourceRefStoreRef(obj: ExternalSecretV1Beta1SpecDataSourceRefStoreRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kind': obj.kind, + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to define a conversion Strategy + * + * @schema ExternalSecretV1Beta1SpecDataFromExtractConversionStrategy + */ +export enum ExternalSecretV1Beta1SpecDataFromExtractConversionStrategy { + /** Default */ + DEFAULT = "Default", + /** Unicode */ + UNICODE = "Unicode", +} + +/** + * Used to define a decoding Strategy + * + * @schema ExternalSecretV1Beta1SpecDataFromExtractDecodingStrategy + */ +export enum ExternalSecretV1Beta1SpecDataFromExtractDecodingStrategy { + /** Auto */ + AUTO = "Auto", + /** Base64 */ + BASE64 = "Base64", + /** Base64URL */ + BASE64_URL = "Base64URL", + /** None */ + NONE = "None", +} + +/** + * Policy for fetching tags/labels from provider secrets, possible options are Fetch, None. Defaults to None + * + * @default None + * @schema ExternalSecretV1Beta1SpecDataFromExtractMetadataPolicy + */ +export enum ExternalSecretV1Beta1SpecDataFromExtractMetadataPolicy { + /** None */ + NONE = "None", + /** Fetch */ + FETCH = "Fetch", +} + +/** + * Used to define a conversion Strategy + * + * @schema ExternalSecretV1Beta1SpecDataFromFindConversionStrategy + */ +export enum ExternalSecretV1Beta1SpecDataFromFindConversionStrategy { + /** Default */ + DEFAULT = "Default", + /** Unicode */ + UNICODE = "Unicode", +} + +/** + * Used to define a decoding Strategy + * + * @schema ExternalSecretV1Beta1SpecDataFromFindDecodingStrategy + */ +export enum ExternalSecretV1Beta1SpecDataFromFindDecodingStrategy { + /** Auto */ + AUTO = "Auto", + /** Base64 */ + BASE64 = "Base64", + /** Base64URL */ + BASE64_URL = "Base64URL", + /** None */ + NONE = "None", +} + +/** + * Finds secrets based on the name. + * + * @schema ExternalSecretV1Beta1SpecDataFromFindName + */ +export interface ExternalSecretV1Beta1SpecDataFromFindName { + /** + * Finds secrets base + * + * @schema ExternalSecretV1Beta1SpecDataFromFindName#regexp + */ + readonly regexp?: string; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecDataFromFindName' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecDataFromFindName(obj: ExternalSecretV1Beta1SpecDataFromFindName | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'regexp': obj.regexp, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to rewrite with regular expressions. + * The resulting key will be the output of a regexp.ReplaceAll operation. + * + * @schema ExternalSecretV1Beta1SpecDataFromRewriteRegexp + */ +export interface ExternalSecretV1Beta1SpecDataFromRewriteRegexp { + /** + * Used to define the regular expression of a re.Compiler. + * + * @schema ExternalSecretV1Beta1SpecDataFromRewriteRegexp#source + */ + readonly source: string; + + /** + * Used to define the target pattern of a ReplaceAll operation. + * + * @schema ExternalSecretV1Beta1SpecDataFromRewriteRegexp#target + */ + readonly target: string; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecDataFromRewriteRegexp' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecDataFromRewriteRegexp(obj: ExternalSecretV1Beta1SpecDataFromRewriteRegexp | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'source': obj.source, + 'target': obj.target, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to apply string transformation on the secrets. + * The resulting key will be the output of the template applied by the operation. + * + * @schema ExternalSecretV1Beta1SpecDataFromRewriteTransform + */ +export interface ExternalSecretV1Beta1SpecDataFromRewriteTransform { + /** + * Used to define the template to apply on the secret name. + * `.value ` will specify the secret name in the template. + * + * @schema ExternalSecretV1Beta1SpecDataFromRewriteTransform#template + */ + readonly template: string; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecDataFromRewriteTransform' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecDataFromRewriteTransform(obj: ExternalSecretV1Beta1SpecDataFromRewriteTransform | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'template': obj.template, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * GeneratorRef points to a generator custom resource. + * + * @schema ExternalSecretV1Beta1SpecDataFromSourceRefGeneratorRef + */ +export interface ExternalSecretV1Beta1SpecDataFromSourceRefGeneratorRef { + /** + * Specify the apiVersion of the generator resource + * + * @schema ExternalSecretV1Beta1SpecDataFromSourceRefGeneratorRef#apiVersion + */ + readonly apiVersion?: string; + + /** + * Specify the Kind of the resource, e.g. Password, ACRAccessToken etc. + * + * @schema ExternalSecretV1Beta1SpecDataFromSourceRefGeneratorRef#kind + */ + readonly kind: string; + + /** + * Specify the name of the generator resource + * + * @schema ExternalSecretV1Beta1SpecDataFromSourceRefGeneratorRef#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecDataFromSourceRefGeneratorRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecDataFromSourceRefGeneratorRef(obj: ExternalSecretV1Beta1SpecDataFromSourceRefGeneratorRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiVersion': obj.apiVersion, + 'kind': obj.kind, + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretStoreRef defines which SecretStore to fetch the ExternalSecret data. + * + * @schema ExternalSecretV1Beta1SpecDataFromSourceRefStoreRef + */ +export interface ExternalSecretV1Beta1SpecDataFromSourceRefStoreRef { + /** + * Kind of the SecretStore resource (SecretStore or ClusterSecretStore) + * Defaults to `SecretStore` + * + * @default SecretStore` + * @schema ExternalSecretV1Beta1SpecDataFromSourceRefStoreRef#kind + */ + readonly kind?: string; + + /** + * Name of the SecretStore resource + * + * @schema ExternalSecretV1Beta1SpecDataFromSourceRefStoreRef#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecDataFromSourceRefStoreRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecDataFromSourceRefStoreRef(obj: ExternalSecretV1Beta1SpecDataFromSourceRefStoreRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kind': obj.kind, + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * EngineVersion specifies the template engine version + * that should be used to compile/execute the + * template specified in .data and .templateFrom[]. + * + * @schema ExternalSecretV1Beta1SpecTargetTemplateEngineVersion + */ +export enum ExternalSecretV1Beta1SpecTargetTemplateEngineVersion { + /** v1 */ + V1 = "v1", + /** v2 */ + V2 = "v2", +} + +/** + * @schema ExternalSecretV1Beta1SpecTargetTemplateMergePolicy + */ +export enum ExternalSecretV1Beta1SpecTargetTemplateMergePolicy { + /** Replace */ + REPLACE = "Replace", + /** Merge */ + MERGE = "Merge", +} + +/** + * ExternalSecretTemplateMetadata defines metadata fields for the Secret blueprint. + * + * @schema ExternalSecretV1Beta1SpecTargetTemplateMetadata + */ +export interface ExternalSecretV1Beta1SpecTargetTemplateMetadata { + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplateMetadata#annotations + */ + readonly annotations?: { [key: string]: string }; + + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplateMetadata#labels + */ + readonly labels?: { [key: string]: string }; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecTargetTemplateMetadata' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecTargetTemplateMetadata(obj: ExternalSecretV1Beta1SpecTargetTemplateMetadata | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'annotations': ((obj.annotations) === undefined) ? undefined : (Object.entries(obj.annotations).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'labels': ((obj.labels) === undefined) ? undefined : (Object.entries(obj.labels).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFrom + */ +export interface ExternalSecretV1Beta1SpecTargetTemplateTemplateFrom { + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFrom#configMap + */ + readonly configMap?: ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMap; + + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFrom#literal + */ + readonly literal?: string; + + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFrom#secret + */ + readonly secret?: ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecret; + + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFrom#target + */ + readonly target?: ExternalSecretV1Beta1SpecTargetTemplateTemplateFromTarget; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecTargetTemplateTemplateFrom' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecTargetTemplateTemplateFrom(obj: ExternalSecretV1Beta1SpecTargetTemplateTemplateFrom | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'configMap': toJson_ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMap(obj.configMap), + 'literal': obj.literal, + 'secret': toJson_ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecret(obj.secret), + 'target': obj.target, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMap + */ +export interface ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMap { + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMap#items + */ + readonly items: ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMapItems[]; + + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMap#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMap' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMap(obj: ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMap | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'items': obj.items?.map(y => toJson_ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMapItems(y)), + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecret + */ +export interface ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecret { + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecret#items + */ + readonly items: ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecretItems[]; + + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecret#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecret' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecret(obj: ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecret | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'items': obj.items?.map(y => toJson_ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecretItems(y)), + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFromTarget + */ +export enum ExternalSecretV1Beta1SpecTargetTemplateTemplateFromTarget { + /** Data */ + DATA = "Data", + /** Annotations */ + ANNOTATIONS = "Annotations", + /** Labels */ + LABELS = "Labels", +} + +/** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMapItems + */ +export interface ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMapItems { + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMapItems#key + */ + readonly key: string; + + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMapItems#templateAs + */ + readonly templateAs?: ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMapItemsTemplateAs; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMapItems' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMapItems(obj: ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMapItems | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'templateAs': obj.templateAs, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecretItems + */ +export interface ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecretItems { + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecretItems#key + */ + readonly key: string; + + /** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecretItems#templateAs + */ + readonly templateAs?: ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecretItemsTemplateAs; + +} + +/** + * Converts an object of type 'ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecretItems' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecretItems(obj: ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecretItems | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'templateAs': obj.templateAs, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMapItemsTemplateAs + */ +export enum ExternalSecretV1Beta1SpecTargetTemplateTemplateFromConfigMapItemsTemplateAs { + /** Values */ + VALUES = "Values", + /** KeysAndValues */ + KEYS_AND_VALUES = "KeysAndValues", +} + +/** + * @schema ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecretItemsTemplateAs + */ +export enum ExternalSecretV1Beta1SpecTargetTemplateTemplateFromSecretItemsTemplateAs { + /** Values */ + VALUES = "Values", + /** KeysAndValues */ + KEYS_AND_VALUES = "KeysAndValues", +} + + +/** + * + * + * @schema PushSecret + */ +export class PushSecret extends ApiObject { + /** + * Returns the apiVersion and kind for "PushSecret" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'external-secrets.io/v1alpha1', + kind: 'PushSecret', + } + + /** + * Renders a Kubernetes manifest for "PushSecret". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: PushSecretProps = {}): any { + return { + ...PushSecret.GVK, + ...toJson_PushSecretProps(props), + }; + } + + /** + * Defines a "PushSecret" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: PushSecretProps = {}) { + super(scope, id, { + ...PushSecret.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...PushSecret.GVK, + ...toJson_PushSecretProps(resolved), + }; + } +} + +/** + * @schema PushSecret + */ +export interface PushSecretProps { + /** + * @schema PushSecret#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * PushSecretSpec configures the behavior of the PushSecret. + * + * @schema PushSecret#spec + */ + readonly spec?: PushSecretSpec; + +} + +/** + * Converts an object of type 'PushSecretProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretProps(obj: PushSecretProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_PushSecretSpec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * PushSecretSpec configures the behavior of the PushSecret. + * + * @schema PushSecretSpec + */ +export interface PushSecretSpec { + /** + * Secret Data that should be pushed to providers + * + * @schema PushSecretSpec#data + */ + readonly data?: PushSecretSpecData[]; + + /** + * Deletion Policy to handle Secrets in the provider. Possible Values: "Delete/None". Defaults to "None". + * + * @default None". + * @schema PushSecretSpec#deletionPolicy + */ + readonly deletionPolicy?: PushSecretSpecDeletionPolicy; + + /** + * The Interval to which External Secrets will try to push a secret definition + * + * @schema PushSecretSpec#refreshInterval + */ + readonly refreshInterval?: string; + + /** + * @schema PushSecretSpec#secretStoreRefs + */ + readonly secretStoreRefs: PushSecretSpecSecretStoreRefs[]; + + /** + * The Secret Selector (k8s source) for the Push Secret + * + * @schema PushSecretSpec#selector + */ + readonly selector: PushSecretSpecSelector; + + /** + * Template defines a blueprint for the created Secret resource. + * + * @schema PushSecretSpec#template + */ + readonly template?: PushSecretSpecTemplate; + + /** + * UpdatePolicy to handle Secrets in the provider. Possible Values: "Replace/IfNotExists". Defaults to "Replace". + * + * @default Replace". + * @schema PushSecretSpec#updatePolicy + */ + readonly updatePolicy?: PushSecretSpecUpdatePolicy; + +} + +/** + * Converts an object of type 'PushSecretSpec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpec(obj: PushSecretSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'data': obj.data?.map(y => toJson_PushSecretSpecData(y)), + 'deletionPolicy': obj.deletionPolicy, + 'refreshInterval': obj.refreshInterval, + 'secretStoreRefs': obj.secretStoreRefs?.map(y => toJson_PushSecretSpecSecretStoreRefs(y)), + 'selector': toJson_PushSecretSpecSelector(obj.selector), + 'template': toJson_PushSecretSpecTemplate(obj.template), + 'updatePolicy': obj.updatePolicy, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema PushSecretSpecData + */ +export interface PushSecretSpecData { + /** + * Used to define a conversion Strategy for the secret keys + * + * @schema PushSecretSpecData#conversionStrategy + */ + readonly conversionStrategy?: PushSecretSpecDataConversionStrategy; + + /** + * Match a given Secret Key to be pushed to the provider. + * + * @schema PushSecretSpecData#match + */ + readonly match: PushSecretSpecDataMatch; + + /** + * Metadata is metadata attached to the secret. + * The structure of metadata is provider specific, please look it up in the provider documentation. + * + * @schema PushSecretSpecData#metadata + */ + readonly metadata?: any; + +} + +/** + * Converts an object of type 'PushSecretSpecData' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpecData(obj: PushSecretSpecData | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'conversionStrategy': obj.conversionStrategy, + 'match': toJson_PushSecretSpecDataMatch(obj.match), + 'metadata': obj.metadata, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Deletion Policy to handle Secrets in the provider. Possible Values: "Delete/None". Defaults to "None". + * + * @default None". + * @schema PushSecretSpecDeletionPolicy + */ +export enum PushSecretSpecDeletionPolicy { + /** Delete */ + DELETE = "Delete", + /** None */ + NONE = "None", +} + +/** + * @schema PushSecretSpecSecretStoreRefs + */ +export interface PushSecretSpecSecretStoreRefs { + /** + * Kind of the SecretStore resource (SecretStore or ClusterSecretStore) + * Defaults to `SecretStore` + * + * @default SecretStore` + * @schema PushSecretSpecSecretStoreRefs#kind + */ + readonly kind?: string; + + /** + * Optionally, sync to secret stores with label selector + * + * @schema PushSecretSpecSecretStoreRefs#labelSelector + */ + readonly labelSelector?: PushSecretSpecSecretStoreRefsLabelSelector; + + /** + * Optionally, sync to the SecretStore of the given name + * + * @schema PushSecretSpecSecretStoreRefs#name + */ + readonly name?: string; + +} + +/** + * Converts an object of type 'PushSecretSpecSecretStoreRefs' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpecSecretStoreRefs(obj: PushSecretSpecSecretStoreRefs | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kind': obj.kind, + 'labelSelector': toJson_PushSecretSpecSecretStoreRefsLabelSelector(obj.labelSelector), + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The Secret Selector (k8s source) for the Push Secret + * + * @schema PushSecretSpecSelector + */ +export interface PushSecretSpecSelector { + /** + * Select a Secret to Push. + * + * @schema PushSecretSpecSelector#secret + */ + readonly secret: PushSecretSpecSelectorSecret; + +} + +/** + * Converts an object of type 'PushSecretSpecSelector' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpecSelector(obj: PushSecretSpecSelector | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secret': toJson_PushSecretSpecSelectorSecret(obj.secret), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Template defines a blueprint for the created Secret resource. + * + * @schema PushSecretSpecTemplate + */ +export interface PushSecretSpecTemplate { + /** + * @schema PushSecretSpecTemplate#data + */ + readonly data?: { [key: string]: string }; + + /** + * EngineVersion specifies the template engine version + * that should be used to compile/execute the + * template specified in .data and .templateFrom[]. + * + * @schema PushSecretSpecTemplate#engineVersion + */ + readonly engineVersion?: PushSecretSpecTemplateEngineVersion; + + /** + * @schema PushSecretSpecTemplate#mergePolicy + */ + readonly mergePolicy?: PushSecretSpecTemplateMergePolicy; + + /** + * ExternalSecretTemplateMetadata defines metadata fields for the Secret blueprint. + * + * @schema PushSecretSpecTemplate#metadata + */ + readonly metadata?: PushSecretSpecTemplateMetadata; + + /** + * @schema PushSecretSpecTemplate#templateFrom + */ + readonly templateFrom?: PushSecretSpecTemplateTemplateFrom[]; + + /** + * @schema PushSecretSpecTemplate#type + */ + readonly type?: string; + +} + +/** + * Converts an object of type 'PushSecretSpecTemplate' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpecTemplate(obj: PushSecretSpecTemplate | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'data': ((obj.data) === undefined) ? undefined : (Object.entries(obj.data).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'engineVersion': obj.engineVersion, + 'mergePolicy': obj.mergePolicy, + 'metadata': toJson_PushSecretSpecTemplateMetadata(obj.metadata), + 'templateFrom': obj.templateFrom?.map(y => toJson_PushSecretSpecTemplateTemplateFrom(y)), + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * UpdatePolicy to handle Secrets in the provider. Possible Values: "Replace/IfNotExists". Defaults to "Replace". + * + * @default Replace". + * @schema PushSecretSpecUpdatePolicy + */ +export enum PushSecretSpecUpdatePolicy { + /** Replace */ + REPLACE = "Replace", + /** IfNotExists */ + IF_NOT_EXISTS = "IfNotExists", +} + +/** + * Used to define a conversion Strategy for the secret keys + * + * @schema PushSecretSpecDataConversionStrategy + */ +export enum PushSecretSpecDataConversionStrategy { + /** None */ + NONE = "None", + /** ReverseUnicode */ + REVERSE_UNICODE = "ReverseUnicode", +} + +/** + * Match a given Secret Key to be pushed to the provider. + * + * @schema PushSecretSpecDataMatch + */ +export interface PushSecretSpecDataMatch { + /** + * Remote Refs to push to providers. + * + * @schema PushSecretSpecDataMatch#remoteRef + */ + readonly remoteRef: PushSecretSpecDataMatchRemoteRef; + + /** + * Secret Key to be pushed + * + * @schema PushSecretSpecDataMatch#secretKey + */ + readonly secretKey?: string; + +} + +/** + * Converts an object of type 'PushSecretSpecDataMatch' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpecDataMatch(obj: PushSecretSpecDataMatch | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'remoteRef': toJson_PushSecretSpecDataMatchRemoteRef(obj.remoteRef), + 'secretKey': obj.secretKey, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optionally, sync to secret stores with label selector + * + * @schema PushSecretSpecSecretStoreRefsLabelSelector + */ +export interface PushSecretSpecSecretStoreRefsLabelSelector { + /** + * matchExpressions is a list of label selector requirements. The requirements are ANDed. + * + * @schema PushSecretSpecSecretStoreRefsLabelSelector#matchExpressions + */ + readonly matchExpressions?: PushSecretSpecSecretStoreRefsLabelSelectorMatchExpressions[]; + + /** + * 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. + * + * @schema PushSecretSpecSecretStoreRefsLabelSelector#matchLabels + */ + readonly matchLabels?: { [key: string]: string }; + +} + +/** + * Converts an object of type 'PushSecretSpecSecretStoreRefsLabelSelector' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpecSecretStoreRefsLabelSelector(obj: PushSecretSpecSecretStoreRefsLabelSelector | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'matchExpressions': obj.matchExpressions?.map(y => toJson_PushSecretSpecSecretStoreRefsLabelSelectorMatchExpressions(y)), + 'matchLabels': ((obj.matchLabels) === undefined) ? undefined : (Object.entries(obj.matchLabels).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Select a Secret to Push. + * + * @schema PushSecretSpecSelectorSecret + */ +export interface PushSecretSpecSelectorSecret { + /** + * Name of the Secret. The Secret must exist in the same namespace as the PushSecret manifest. + * + * @schema PushSecretSpecSelectorSecret#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'PushSecretSpecSelectorSecret' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpecSelectorSecret(obj: PushSecretSpecSelectorSecret | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * EngineVersion specifies the template engine version + * that should be used to compile/execute the + * template specified in .data and .templateFrom[]. + * + * @schema PushSecretSpecTemplateEngineVersion + */ +export enum PushSecretSpecTemplateEngineVersion { + /** v1 */ + V1 = "v1", + /** v2 */ + V2 = "v2", +} + +/** + * @schema PushSecretSpecTemplateMergePolicy + */ +export enum PushSecretSpecTemplateMergePolicy { + /** Replace */ + REPLACE = "Replace", + /** Merge */ + MERGE = "Merge", +} + +/** + * ExternalSecretTemplateMetadata defines metadata fields for the Secret blueprint. + * + * @schema PushSecretSpecTemplateMetadata + */ +export interface PushSecretSpecTemplateMetadata { + /** + * @schema PushSecretSpecTemplateMetadata#annotations + */ + readonly annotations?: { [key: string]: string }; + + /** + * @schema PushSecretSpecTemplateMetadata#labels + */ + readonly labels?: { [key: string]: string }; + +} + +/** + * Converts an object of type 'PushSecretSpecTemplateMetadata' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpecTemplateMetadata(obj: PushSecretSpecTemplateMetadata | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'annotations': ((obj.annotations) === undefined) ? undefined : (Object.entries(obj.annotations).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'labels': ((obj.labels) === undefined) ? undefined : (Object.entries(obj.labels).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema PushSecretSpecTemplateTemplateFrom + */ +export interface PushSecretSpecTemplateTemplateFrom { + /** + * @schema PushSecretSpecTemplateTemplateFrom#configMap + */ + readonly configMap?: PushSecretSpecTemplateTemplateFromConfigMap; + + /** + * @schema PushSecretSpecTemplateTemplateFrom#literal + */ + readonly literal?: string; + + /** + * @schema PushSecretSpecTemplateTemplateFrom#secret + */ + readonly secret?: PushSecretSpecTemplateTemplateFromSecret; + + /** + * @schema PushSecretSpecTemplateTemplateFrom#target + */ + readonly target?: PushSecretSpecTemplateTemplateFromTarget; + +} + +/** + * Converts an object of type 'PushSecretSpecTemplateTemplateFrom' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpecTemplateTemplateFrom(obj: PushSecretSpecTemplateTemplateFrom | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'configMap': toJson_PushSecretSpecTemplateTemplateFromConfigMap(obj.configMap), + 'literal': obj.literal, + 'secret': toJson_PushSecretSpecTemplateTemplateFromSecret(obj.secret), + 'target': obj.target, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Remote Refs to push to providers. + * + * @schema PushSecretSpecDataMatchRemoteRef + */ +export interface PushSecretSpecDataMatchRemoteRef { + /** + * Name of the property in the resulting secret + * + * @schema PushSecretSpecDataMatchRemoteRef#property + */ + readonly property?: string; + + /** + * Name of the resulting provider secret. + * + * @schema PushSecretSpecDataMatchRemoteRef#remoteKey + */ + readonly remoteKey: string; + +} + +/** + * Converts an object of type 'PushSecretSpecDataMatchRemoteRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpecDataMatchRemoteRef(obj: PushSecretSpecDataMatchRemoteRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'property': obj.property, + 'remoteKey': obj.remoteKey, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A label selector requirement is a selector that contains values, a key, and an operator that + * relates the key and values. + * + * @schema PushSecretSpecSecretStoreRefsLabelSelectorMatchExpressions + */ +export interface PushSecretSpecSecretStoreRefsLabelSelectorMatchExpressions { + /** + * key is the label key that the selector applies to. + * + * @schema PushSecretSpecSecretStoreRefsLabelSelectorMatchExpressions#key + */ + readonly key: string; + + /** + * operator represents a key's relationship to a set of values. + * Valid operators are In, NotIn, Exists and DoesNotExist. + * + * @schema PushSecretSpecSecretStoreRefsLabelSelectorMatchExpressions#operator + */ + readonly operator: string; + + /** + * 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. + * + * @schema PushSecretSpecSecretStoreRefsLabelSelectorMatchExpressions#values + */ + readonly values?: string[]; + +} + +/** + * Converts an object of type 'PushSecretSpecSecretStoreRefsLabelSelectorMatchExpressions' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpecSecretStoreRefsLabelSelectorMatchExpressions(obj: PushSecretSpecSecretStoreRefsLabelSelectorMatchExpressions | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'operator': obj.operator, + 'values': obj.values?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema PushSecretSpecTemplateTemplateFromConfigMap + */ +export interface PushSecretSpecTemplateTemplateFromConfigMap { + /** + * @schema PushSecretSpecTemplateTemplateFromConfigMap#items + */ + readonly items: PushSecretSpecTemplateTemplateFromConfigMapItems[]; + + /** + * @schema PushSecretSpecTemplateTemplateFromConfigMap#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'PushSecretSpecTemplateTemplateFromConfigMap' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpecTemplateTemplateFromConfigMap(obj: PushSecretSpecTemplateTemplateFromConfigMap | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'items': obj.items?.map(y => toJson_PushSecretSpecTemplateTemplateFromConfigMapItems(y)), + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema PushSecretSpecTemplateTemplateFromSecret + */ +export interface PushSecretSpecTemplateTemplateFromSecret { + /** + * @schema PushSecretSpecTemplateTemplateFromSecret#items + */ + readonly items: PushSecretSpecTemplateTemplateFromSecretItems[]; + + /** + * @schema PushSecretSpecTemplateTemplateFromSecret#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'PushSecretSpecTemplateTemplateFromSecret' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpecTemplateTemplateFromSecret(obj: PushSecretSpecTemplateTemplateFromSecret | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'items': obj.items?.map(y => toJson_PushSecretSpecTemplateTemplateFromSecretItems(y)), + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema PushSecretSpecTemplateTemplateFromTarget + */ +export enum PushSecretSpecTemplateTemplateFromTarget { + /** Data */ + DATA = "Data", + /** Annotations */ + ANNOTATIONS = "Annotations", + /** Labels */ + LABELS = "Labels", +} + +/** + * @schema PushSecretSpecTemplateTemplateFromConfigMapItems + */ +export interface PushSecretSpecTemplateTemplateFromConfigMapItems { + /** + * @schema PushSecretSpecTemplateTemplateFromConfigMapItems#key + */ + readonly key: string; + + /** + * @schema PushSecretSpecTemplateTemplateFromConfigMapItems#templateAs + */ + readonly templateAs?: PushSecretSpecTemplateTemplateFromConfigMapItemsTemplateAs; + +} + +/** + * Converts an object of type 'PushSecretSpecTemplateTemplateFromConfigMapItems' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpecTemplateTemplateFromConfigMapItems(obj: PushSecretSpecTemplateTemplateFromConfigMapItems | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'templateAs': obj.templateAs, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema PushSecretSpecTemplateTemplateFromSecretItems + */ +export interface PushSecretSpecTemplateTemplateFromSecretItems { + /** + * @schema PushSecretSpecTemplateTemplateFromSecretItems#key + */ + readonly key: string; + + /** + * @schema PushSecretSpecTemplateTemplateFromSecretItems#templateAs + */ + readonly templateAs?: PushSecretSpecTemplateTemplateFromSecretItemsTemplateAs; + +} + +/** + * Converts an object of type 'PushSecretSpecTemplateTemplateFromSecretItems' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PushSecretSpecTemplateTemplateFromSecretItems(obj: PushSecretSpecTemplateTemplateFromSecretItems | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'templateAs': obj.templateAs, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema PushSecretSpecTemplateTemplateFromConfigMapItemsTemplateAs + */ +export enum PushSecretSpecTemplateTemplateFromConfigMapItemsTemplateAs { + /** Values */ + VALUES = "Values", + /** KeysAndValues */ + KEYS_AND_VALUES = "KeysAndValues", +} + +/** + * @schema PushSecretSpecTemplateTemplateFromSecretItemsTemplateAs + */ +export enum PushSecretSpecTemplateTemplateFromSecretItemsTemplateAs { + /** Values */ + VALUES = "Values", + /** KeysAndValues */ + KEYS_AND_VALUES = "KeysAndValues", +} + + +/** + * SecretStore represents a secure external location for storing secrets, which can be referenced as part of `storeRef` fields. + * + * @schema SecretStore + */ +export class SecretStore extends ApiObject { + /** + * Returns the apiVersion and kind for "SecretStore" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'external-secrets.io/v1alpha1', + kind: 'SecretStore', + } + + /** + * Renders a Kubernetes manifest for "SecretStore". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: SecretStoreProps = {}): any { + return { + ...SecretStore.GVK, + ...toJson_SecretStoreProps(props), + }; + } + + /** + * Defines a "SecretStore" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: SecretStoreProps = {}) { + super(scope, id, { + ...SecretStore.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...SecretStore.GVK, + ...toJson_SecretStoreProps(resolved), + }; + } +} + +/** + * SecretStore represents a secure external location for storing secrets, which can be referenced as part of `storeRef` fields. + * + * @schema SecretStore + */ +export interface SecretStoreProps { + /** + * @schema SecretStore#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * SecretStoreSpec defines the desired state of SecretStore. + * + * @schema SecretStore#spec + */ + readonly spec?: SecretStoreSpec; + +} + +/** + * Converts an object of type 'SecretStoreProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreProps(obj: SecretStoreProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_SecretStoreSpec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretStoreSpec defines the desired state of SecretStore. + * + * @schema SecretStoreSpec + */ +export interface SecretStoreSpec { + /** + * Used to select the correct ESO controller (think: ingress.ingressClassName) + * The ESO controller is instantiated with a specific controller name and filters ES based on this property + * + * @schema SecretStoreSpec#controller + */ + readonly controller?: string; + + /** + * Used to configure the provider. Only one provider may be set + * + * @schema SecretStoreSpec#provider + */ + readonly provider: SecretStoreSpecProvider; + + /** + * Used to configure http retries if failed + * + * @schema SecretStoreSpec#retrySettings + */ + readonly retrySettings?: SecretStoreSpecRetrySettings; + +} + +/** + * Converts an object of type 'SecretStoreSpec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpec(obj: SecretStoreSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'controller': obj.controller, + 'provider': toJson_SecretStoreSpecProvider(obj.provider), + 'retrySettings': toJson_SecretStoreSpecRetrySettings(obj.retrySettings), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to configure the provider. Only one provider may be set + * + * @schema SecretStoreSpecProvider + */ +export interface SecretStoreSpecProvider { + /** + * Akeyless configures this store to sync secrets using Akeyless Vault provider + * + * @schema SecretStoreSpecProvider#akeyless + */ + readonly akeyless?: SecretStoreSpecProviderAkeyless; + + /** + * Alibaba configures this store to sync secrets using Alibaba Cloud provider + * + * @schema SecretStoreSpecProvider#alibaba + */ + readonly alibaba?: SecretStoreSpecProviderAlibaba; + + /** + * AWS configures this store to sync secrets using AWS Secret Manager provider + * + * @schema SecretStoreSpecProvider#aws + */ + readonly aws?: SecretStoreSpecProviderAws; + + /** + * AzureKV configures this store to sync secrets using Azure Key Vault provider + * + * @schema SecretStoreSpecProvider#azurekv + */ + readonly azurekv?: SecretStoreSpecProviderAzurekv; + + /** + * Fake configures a store with static key/value pairs + * + * @schema SecretStoreSpecProvider#fake + */ + readonly fake?: SecretStoreSpecProviderFake; + + /** + * GCPSM configures this store to sync secrets using Google Cloud Platform Secret Manager provider + * + * @schema SecretStoreSpecProvider#gcpsm + */ + readonly gcpsm?: SecretStoreSpecProviderGcpsm; + + /** + * GitLab configures this store to sync secrets using GitLab Variables provider + * + * @schema SecretStoreSpecProvider#gitlab + */ + readonly gitlab?: SecretStoreSpecProviderGitlab; + + /** + * IBM configures this store to sync secrets using IBM Cloud provider + * + * @schema SecretStoreSpecProvider#ibm + */ + readonly ibm?: SecretStoreSpecProviderIbm; + + /** + * Kubernetes configures this store to sync secrets using a Kubernetes cluster provider + * + * @schema SecretStoreSpecProvider#kubernetes + */ + readonly kubernetes?: SecretStoreSpecProviderKubernetes; + + /** + * Oracle configures this store to sync secrets using Oracle Vault provider + * + * @schema SecretStoreSpecProvider#oracle + */ + readonly oracle?: SecretStoreSpecProviderOracle; + + /** + * Configures a store to sync secrets with a Password Depot instance. + * + * @schema SecretStoreSpecProvider#passworddepot + */ + readonly passworddepot?: SecretStoreSpecProviderPassworddepot; + + /** + * Vault configures this store to sync secrets using Hashi provider + * + * @schema SecretStoreSpecProvider#vault + */ + readonly vault?: SecretStoreSpecProviderVault; + + /** + * Webhook configures this store to sync secrets using a generic templated webhook + * + * @schema SecretStoreSpecProvider#webhook + */ + readonly webhook?: SecretStoreSpecProviderWebhook; + + /** + * YandexLockbox configures this store to sync secrets using Yandex Lockbox provider + * + * @schema SecretStoreSpecProvider#yandexlockbox + */ + readonly yandexlockbox?: SecretStoreSpecProviderYandexlockbox; + +} + +/** + * Converts an object of type 'SecretStoreSpecProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProvider(obj: SecretStoreSpecProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'akeyless': toJson_SecretStoreSpecProviderAkeyless(obj.akeyless), + 'alibaba': toJson_SecretStoreSpecProviderAlibaba(obj.alibaba), + 'aws': toJson_SecretStoreSpecProviderAws(obj.aws), + 'azurekv': toJson_SecretStoreSpecProviderAzurekv(obj.azurekv), + 'fake': toJson_SecretStoreSpecProviderFake(obj.fake), + 'gcpsm': toJson_SecretStoreSpecProviderGcpsm(obj.gcpsm), + 'gitlab': toJson_SecretStoreSpecProviderGitlab(obj.gitlab), + 'ibm': toJson_SecretStoreSpecProviderIbm(obj.ibm), + 'kubernetes': toJson_SecretStoreSpecProviderKubernetes(obj.kubernetes), + 'oracle': toJson_SecretStoreSpecProviderOracle(obj.oracle), + 'passworddepot': toJson_SecretStoreSpecProviderPassworddepot(obj.passworddepot), + 'vault': toJson_SecretStoreSpecProviderVault(obj.vault), + 'webhook': toJson_SecretStoreSpecProviderWebhook(obj.webhook), + 'yandexlockbox': toJson_SecretStoreSpecProviderYandexlockbox(obj.yandexlockbox), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to configure http retries if failed + * + * @schema SecretStoreSpecRetrySettings + */ +export interface SecretStoreSpecRetrySettings { + /** + * @schema SecretStoreSpecRetrySettings#maxRetries + */ + readonly maxRetries?: number; + + /** + * @schema SecretStoreSpecRetrySettings#retryInterval + */ + readonly retryInterval?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecRetrySettings' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecRetrySettings(obj: SecretStoreSpecRetrySettings | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'maxRetries': obj.maxRetries, + 'retryInterval': obj.retryInterval, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Akeyless configures this store to sync secrets using Akeyless Vault provider + * + * @schema SecretStoreSpecProviderAkeyless + */ +export interface SecretStoreSpecProviderAkeyless { + /** + * Akeyless GW API Url from which the secrets to be fetched from. + * + * @schema SecretStoreSpecProviderAkeyless#akeylessGWApiURL + */ + readonly akeylessGwApiUrl: string; + + /** + * Auth configures how the operator authenticates with Akeyless. + * + * @schema SecretStoreSpecProviderAkeyless#authSecretRef + */ + readonly authSecretRef: SecretStoreSpecProviderAkeylessAuthSecretRef; + + /** + * PEM/base64 encoded CA bundle used to validate Akeyless Gateway certificate. Only used + * if the AkeylessGWApiURL URL is using HTTPS protocol. If not set the system root certificates + * are used to validate the TLS connection. + * + * @schema SecretStoreSpecProviderAkeyless#caBundle + */ + readonly caBundle?: string; + + /** + * The provider for the CA bundle to use to validate Akeyless Gateway certificate. + * + * @schema SecretStoreSpecProviderAkeyless#caProvider + */ + readonly caProvider?: SecretStoreSpecProviderAkeylessCaProvider; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAkeyless' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAkeyless(obj: SecretStoreSpecProviderAkeyless | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'akeylessGWApiURL': obj.akeylessGwApiUrl, + 'authSecretRef': toJson_SecretStoreSpecProviderAkeylessAuthSecretRef(obj.authSecretRef), + 'caBundle': obj.caBundle, + 'caProvider': toJson_SecretStoreSpecProviderAkeylessCaProvider(obj.caProvider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Alibaba configures this store to sync secrets using Alibaba Cloud provider + * + * @schema SecretStoreSpecProviderAlibaba + */ +export interface SecretStoreSpecProviderAlibaba { + /** + * AlibabaAuth contains a secretRef for credentials. + * + * @schema SecretStoreSpecProviderAlibaba#auth + */ + readonly auth: SecretStoreSpecProviderAlibabaAuth; + + /** + * Alibaba Region to be used for the provider + * + * @schema SecretStoreSpecProviderAlibaba#regionID + */ + readonly regionId: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAlibaba' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAlibaba(obj: SecretStoreSpecProviderAlibaba | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreSpecProviderAlibabaAuth(obj.auth), + 'regionID': obj.regionId, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AWS configures this store to sync secrets using AWS Secret Manager provider + * + * @schema SecretStoreSpecProviderAws + */ +export interface SecretStoreSpecProviderAws { + /** + * Auth defines the information necessary to authenticate against AWS + * if not set aws sdk will infer credentials from your environment + * see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials + * + * @schema SecretStoreSpecProviderAws#auth + */ + readonly auth?: SecretStoreSpecProviderAwsAuth; + + /** + * AWS Region to be used for the provider + * + * @schema SecretStoreSpecProviderAws#region + */ + readonly region: string; + + /** + * Role is a Role ARN which the SecretManager provider will assume + * + * @schema SecretStoreSpecProviderAws#role + */ + readonly role?: string; + + /** + * Service defines which service should be used to fetch the secrets + * + * @schema SecretStoreSpecProviderAws#service + */ + readonly service: SecretStoreSpecProviderAwsService; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAws' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAws(obj: SecretStoreSpecProviderAws | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreSpecProviderAwsAuth(obj.auth), + 'region': obj.region, + 'role': obj.role, + 'service': obj.service, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AzureKV configures this store to sync secrets using Azure Key Vault provider + * + * @schema SecretStoreSpecProviderAzurekv + */ +export interface SecretStoreSpecProviderAzurekv { + /** + * Auth configures how the operator authenticates with Azure. Required for ServicePrincipal auth type. + * + * @schema SecretStoreSpecProviderAzurekv#authSecretRef + */ + readonly authSecretRef?: SecretStoreSpecProviderAzurekvAuthSecretRef; + + /** + * Auth type defines how to authenticate to the keyvault service. + * Valid values are: + * - "ServicePrincipal" (default): Using a service principal (tenantId, clientId, clientSecret) + * - "ManagedIdentity": Using Managed Identity assigned to the pod (see aad-pod-identity) + * + * @schema SecretStoreSpecProviderAzurekv#authType + */ + readonly authType?: SecretStoreSpecProviderAzurekvAuthType; + + /** + * If multiple Managed Identity is assigned to the pod, you can select the one to be used + * + * @schema SecretStoreSpecProviderAzurekv#identityId + */ + readonly identityId?: string; + + /** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema SecretStoreSpecProviderAzurekv#serviceAccountRef + */ + readonly serviceAccountRef?: SecretStoreSpecProviderAzurekvServiceAccountRef; + + /** + * TenantID configures the Azure Tenant to send requests to. Required for ServicePrincipal auth type. + * + * @schema SecretStoreSpecProviderAzurekv#tenantId + */ + readonly tenantId?: string; + + /** + * Vault Url from which the secrets to be fetched from. + * + * @schema SecretStoreSpecProviderAzurekv#vaultUrl + */ + readonly vaultUrl: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAzurekv' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAzurekv(obj: SecretStoreSpecProviderAzurekv | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'authSecretRef': toJson_SecretStoreSpecProviderAzurekvAuthSecretRef(obj.authSecretRef), + 'authType': obj.authType, + 'identityId': obj.identityId, + 'serviceAccountRef': toJson_SecretStoreSpecProviderAzurekvServiceAccountRef(obj.serviceAccountRef), + 'tenantId': obj.tenantId, + 'vaultUrl': obj.vaultUrl, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Fake configures a store with static key/value pairs + * + * @schema SecretStoreSpecProviderFake + */ +export interface SecretStoreSpecProviderFake { + /** + * @schema SecretStoreSpecProviderFake#data + */ + readonly data: SecretStoreSpecProviderFakeData[]; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderFake' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderFake(obj: SecretStoreSpecProviderFake | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'data': obj.data?.map(y => toJson_SecretStoreSpecProviderFakeData(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * GCPSM configures this store to sync secrets using Google Cloud Platform Secret Manager provider + * + * @schema SecretStoreSpecProviderGcpsm + */ +export interface SecretStoreSpecProviderGcpsm { + /** + * Auth defines the information necessary to authenticate against GCP + * + * @schema SecretStoreSpecProviderGcpsm#auth + */ + readonly auth?: SecretStoreSpecProviderGcpsmAuth; + + /** + * ProjectID project where secret is located + * + * @schema SecretStoreSpecProviderGcpsm#projectID + */ + readonly projectId?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderGcpsm' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderGcpsm(obj: SecretStoreSpecProviderGcpsm | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreSpecProviderGcpsmAuth(obj.auth), + 'projectID': obj.projectId, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * GitLab configures this store to sync secrets using GitLab Variables provider + * + * @schema SecretStoreSpecProviderGitlab + */ +export interface SecretStoreSpecProviderGitlab { + /** + * Auth configures how secret-manager authenticates with a GitLab instance. + * + * @schema SecretStoreSpecProviderGitlab#auth + */ + readonly auth: SecretStoreSpecProviderGitlabAuth; + + /** + * ProjectID specifies a project where secrets are located. + * + * @schema SecretStoreSpecProviderGitlab#projectID + */ + readonly projectId?: string; + + /** + * URL configures the GitLab instance URL. Defaults to https://gitlab.com/. + * + * @default https://gitlab.com/. + * @schema SecretStoreSpecProviderGitlab#url + */ + readonly url?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderGitlab' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderGitlab(obj: SecretStoreSpecProviderGitlab | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreSpecProviderGitlabAuth(obj.auth), + 'projectID': obj.projectId, + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * IBM configures this store to sync secrets using IBM Cloud provider + * + * @schema SecretStoreSpecProviderIbm + */ +export interface SecretStoreSpecProviderIbm { + /** + * Auth configures how secret-manager authenticates with the IBM secrets manager. + * + * @schema SecretStoreSpecProviderIbm#auth + */ + readonly auth: SecretStoreSpecProviderIbmAuth; + + /** + * ServiceURL is the Endpoint URL that is specific to the Secrets Manager service instance + * + * @schema SecretStoreSpecProviderIbm#serviceUrl + */ + readonly serviceUrl?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderIbm' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderIbm(obj: SecretStoreSpecProviderIbm | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreSpecProviderIbmAuth(obj.auth), + 'serviceUrl': obj.serviceUrl, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Kubernetes configures this store to sync secrets using a Kubernetes cluster provider + * + * @schema SecretStoreSpecProviderKubernetes + */ +export interface SecretStoreSpecProviderKubernetes { + /** + * Auth configures how secret-manager authenticates with a Kubernetes instance. + * + * @schema SecretStoreSpecProviderKubernetes#auth + */ + readonly auth: SecretStoreSpecProviderKubernetesAuth; + + /** + * Remote namespace to fetch the secrets from + * + * @schema SecretStoreSpecProviderKubernetes#remoteNamespace + */ + readonly remoteNamespace?: string; + + /** + * configures the Kubernetes server Address. + * + * @schema SecretStoreSpecProviderKubernetes#server + */ + readonly server?: SecretStoreSpecProviderKubernetesServer; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderKubernetes' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderKubernetes(obj: SecretStoreSpecProviderKubernetes | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreSpecProviderKubernetesAuth(obj.auth), + 'remoteNamespace': obj.remoteNamespace, + 'server': toJson_SecretStoreSpecProviderKubernetesServer(obj.server), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Oracle configures this store to sync secrets using Oracle Vault provider + * + * @schema SecretStoreSpecProviderOracle + */ +export interface SecretStoreSpecProviderOracle { + /** + * Auth configures how secret-manager authenticates with the Oracle Vault. + * If empty, instance principal is used. Optionally, the authenticating principal type + * and/or user data may be supplied for the use of workload identity and user principal. + * + * @schema SecretStoreSpecProviderOracle#auth + */ + readonly auth?: SecretStoreSpecProviderOracleAuth; + + /** + * Compartment is the vault compartment OCID. + * Required for PushSecret + * + * @schema SecretStoreSpecProviderOracle#compartment + */ + readonly compartment?: string; + + /** + * EncryptionKey is the OCID of the encryption key within the vault. + * Required for PushSecret + * + * @schema SecretStoreSpecProviderOracle#encryptionKey + */ + readonly encryptionKey?: string; + + /** + * The type of principal to use for authentication. If left blank, the Auth struct will + * determine the principal type. This optional field must be specified if using + * workload identity. + * + * @schema SecretStoreSpecProviderOracle#principalType + */ + readonly principalType?: SecretStoreSpecProviderOraclePrincipalType; + + /** + * Region is the region where vault is located. + * + * @schema SecretStoreSpecProviderOracle#region + */ + readonly region: string; + + /** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema SecretStoreSpecProviderOracle#serviceAccountRef + */ + readonly serviceAccountRef?: SecretStoreSpecProviderOracleServiceAccountRef; + + /** + * Vault is the vault's OCID of the specific vault where secret is located. + * + * @schema SecretStoreSpecProviderOracle#vault + */ + readonly vault: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderOracle' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderOracle(obj: SecretStoreSpecProviderOracle | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreSpecProviderOracleAuth(obj.auth), + 'compartment': obj.compartment, + 'encryptionKey': obj.encryptionKey, + 'principalType': obj.principalType, + 'region': obj.region, + 'serviceAccountRef': toJson_SecretStoreSpecProviderOracleServiceAccountRef(obj.serviceAccountRef), + 'vault': obj.vault, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Configures a store to sync secrets with a Password Depot instance. + * + * @schema SecretStoreSpecProviderPassworddepot + */ +export interface SecretStoreSpecProviderPassworddepot { + /** + * Auth configures how secret-manager authenticates with a Password Depot instance. + * + * @schema SecretStoreSpecProviderPassworddepot#auth + */ + readonly auth: SecretStoreSpecProviderPassworddepotAuth; + + /** + * Database to use as source + * + * @schema SecretStoreSpecProviderPassworddepot#database + */ + readonly database: string; + + /** + * URL configures the Password Depot instance URL. + * + * @schema SecretStoreSpecProviderPassworddepot#host + */ + readonly host: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderPassworddepot' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderPassworddepot(obj: SecretStoreSpecProviderPassworddepot | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreSpecProviderPassworddepotAuth(obj.auth), + 'database': obj.database, + 'host': obj.host, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Vault configures this store to sync secrets using Hashi provider + * + * @schema SecretStoreSpecProviderVault + */ +export interface SecretStoreSpecProviderVault { + /** + * Auth configures how secret-manager authenticates with the Vault server. + * + * @schema SecretStoreSpecProviderVault#auth + */ + readonly auth: SecretStoreSpecProviderVaultAuth; + + /** + * PEM encoded CA bundle used to validate Vault server certificate. Only used + * if the Server URL is using HTTPS protocol. This parameter is ignored for + * plain HTTP protocol connection. If not set the system root certificates + * are used to validate the TLS connection. + * + * @schema SecretStoreSpecProviderVault#caBundle + */ + readonly caBundle?: string; + + /** + * The provider for the CA bundle to use to validate Vault server certificate. + * + * @schema SecretStoreSpecProviderVault#caProvider + */ + readonly caProvider?: SecretStoreSpecProviderVaultCaProvider; + + /** + * ForwardInconsistent tells Vault to forward read-after-write requests to the Vault + * leader instead of simply retrying within a loop. This can increase performance if + * the option is enabled serverside. + * https://www.vaultproject.io/docs/configuration/replication#allow_forwarding_via_header + * + * @schema SecretStoreSpecProviderVault#forwardInconsistent + */ + readonly forwardInconsistent?: boolean; + + /** + * Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows + * Vault environments to support Secure Multi-tenancy. e.g: "ns1". + * More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces + * + * @schema SecretStoreSpecProviderVault#namespace + */ + readonly namespace?: string; + + /** + * Path is the mount path of the Vault KV backend endpoint, e.g: + * "secret". The v2 KV secret engine version specific "/data" path suffix + * for fetching secrets from Vault is optional and will be appended + * if not present in specified path. + * + * @schema SecretStoreSpecProviderVault#path + */ + readonly path?: string; + + /** + * ReadYourWrites ensures isolated read-after-write semantics by + * providing discovered cluster replication states in each request. + * More information about eventual consistency in Vault can be found here + * https://www.vaultproject.io/docs/enterprise/consistency + * + * @schema SecretStoreSpecProviderVault#readYourWrites + */ + readonly readYourWrites?: boolean; + + /** + * Server is the connection address for the Vault server, e.g: "https://vault.example.com:8200". + * + * @schema SecretStoreSpecProviderVault#server + */ + readonly server: string; + + /** + * Version is the Vault KV secret engine version. This can be either "v1" or + * "v2". Version defaults to "v2". + * + * @schema SecretStoreSpecProviderVault#version + */ + readonly version?: SecretStoreSpecProviderVaultVersion; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVault' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVault(obj: SecretStoreSpecProviderVault | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreSpecProviderVaultAuth(obj.auth), + 'caBundle': obj.caBundle, + 'caProvider': toJson_SecretStoreSpecProviderVaultCaProvider(obj.caProvider), + 'forwardInconsistent': obj.forwardInconsistent, + 'namespace': obj.namespace, + 'path': obj.path, + 'readYourWrites': obj.readYourWrites, + 'server': obj.server, + 'version': obj.version, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Webhook configures this store to sync secrets using a generic templated webhook + * + * @schema SecretStoreSpecProviderWebhook + */ +export interface SecretStoreSpecProviderWebhook { + /** + * Body + * + * @schema SecretStoreSpecProviderWebhook#body + */ + readonly body?: string; + + /** + * PEM encoded CA bundle used to validate webhook server certificate. Only used + * if the Server URL is using HTTPS protocol. This parameter is ignored for + * plain HTTP protocol connection. If not set the system root certificates + * are used to validate the TLS connection. + * + * @schema SecretStoreSpecProviderWebhook#caBundle + */ + readonly caBundle?: string; + + /** + * The provider for the CA bundle to use to validate webhook server certificate. + * + * @schema SecretStoreSpecProviderWebhook#caProvider + */ + readonly caProvider?: SecretStoreSpecProviderWebhookCaProvider; + + /** + * Headers + * + * @schema SecretStoreSpecProviderWebhook#headers + */ + readonly headers?: { [key: string]: string }; + + /** + * Webhook Method + * + * @schema SecretStoreSpecProviderWebhook#method + */ + readonly method?: string; + + /** + * Result formatting + * + * @schema SecretStoreSpecProviderWebhook#result + */ + readonly result: SecretStoreSpecProviderWebhookResult; + + /** + * Secrets to fill in templates + * These secrets will be passed to the templating function as key value pairs under the given name + * + * @schema SecretStoreSpecProviderWebhook#secrets + */ + readonly secrets?: SecretStoreSpecProviderWebhookSecrets[]; + + /** + * Timeout + * + * @schema SecretStoreSpecProviderWebhook#timeout + */ + readonly timeout?: string; + + /** + * Webhook url to call + * + * @schema SecretStoreSpecProviderWebhook#url + */ + readonly url: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderWebhook' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderWebhook(obj: SecretStoreSpecProviderWebhook | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'body': obj.body, + 'caBundle': obj.caBundle, + 'caProvider': toJson_SecretStoreSpecProviderWebhookCaProvider(obj.caProvider), + 'headers': ((obj.headers) === undefined) ? undefined : (Object.entries(obj.headers).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'method': obj.method, + 'result': toJson_SecretStoreSpecProviderWebhookResult(obj.result), + 'secrets': obj.secrets?.map(y => toJson_SecretStoreSpecProviderWebhookSecrets(y)), + 'timeout': obj.timeout, + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * YandexLockbox configures this store to sync secrets using Yandex Lockbox provider + * + * @schema SecretStoreSpecProviderYandexlockbox + */ +export interface SecretStoreSpecProviderYandexlockbox { + /** + * Yandex.Cloud API endpoint (e.g. 'api.cloud.yandex.net:443') + * + * @schema SecretStoreSpecProviderYandexlockbox#apiEndpoint + */ + readonly apiEndpoint?: string; + + /** + * Auth defines the information necessary to authenticate against Yandex Lockbox + * + * @schema SecretStoreSpecProviderYandexlockbox#auth + */ + readonly auth: SecretStoreSpecProviderYandexlockboxAuth; + + /** + * The provider for the CA bundle to use to validate Yandex.Cloud server certificate. + * + * @schema SecretStoreSpecProviderYandexlockbox#caProvider + */ + readonly caProvider?: SecretStoreSpecProviderYandexlockboxCaProvider; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderYandexlockbox' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderYandexlockbox(obj: SecretStoreSpecProviderYandexlockbox | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiEndpoint': obj.apiEndpoint, + 'auth': toJson_SecretStoreSpecProviderYandexlockboxAuth(obj.auth), + 'caProvider': toJson_SecretStoreSpecProviderYandexlockboxCaProvider(obj.caProvider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how the operator authenticates with Akeyless. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRef + */ +export interface SecretStoreSpecProviderAkeylessAuthSecretRef { + /** + * Kubernetes authenticates with Akeyless by passing the ServiceAccount + * token stored in the named Secret resource. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRef#kubernetesAuth + */ + readonly kubernetesAuth?: SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth; + + /** + * Reference to a Secret that contains the details + * to authenticate with Akeyless. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRef#secretRef + */ + readonly secretRef?: SecretStoreSpecProviderAkeylessAuthSecretRefSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAkeylessAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAkeylessAuthSecretRef(obj: SecretStoreSpecProviderAkeylessAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kubernetesAuth': toJson_SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth(obj.kubernetesAuth), + 'secretRef': toJson_SecretStoreSpecProviderAkeylessAuthSecretRefSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate Akeyless Gateway certificate. + * + * @schema SecretStoreSpecProviderAkeylessCaProvider + */ +export interface SecretStoreSpecProviderAkeylessCaProvider { + /** + * The key the value inside of the provider type to use, only used with "Secret" type + * + * @schema SecretStoreSpecProviderAkeylessCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema SecretStoreSpecProviderAkeylessCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * + * @schema SecretStoreSpecProviderAkeylessCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreSpecProviderAkeylessCaProvider#type + */ + readonly type: SecretStoreSpecProviderAkeylessCaProviderType; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAkeylessCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAkeylessCaProvider(obj: SecretStoreSpecProviderAkeylessCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AlibabaAuth contains a secretRef for credentials. + * + * @schema SecretStoreSpecProviderAlibabaAuth + */ +export interface SecretStoreSpecProviderAlibabaAuth { + /** + * Authenticate against Alibaba using RRSA. + * + * @schema SecretStoreSpecProviderAlibabaAuth#rrsa + */ + readonly rrsa?: SecretStoreSpecProviderAlibabaAuthRrsa; + + /** + * AlibabaAuthSecretRef holds secret references for Alibaba credentials. + * + * @schema SecretStoreSpecProviderAlibabaAuth#secretRef + */ + readonly secretRef?: SecretStoreSpecProviderAlibabaAuthSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAlibabaAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAlibabaAuth(obj: SecretStoreSpecProviderAlibabaAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'rrsa': toJson_SecretStoreSpecProviderAlibabaAuthRrsa(obj.rrsa), + 'secretRef': toJson_SecretStoreSpecProviderAlibabaAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against AWS + * if not set aws sdk will infer credentials from your environment + * see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials + * + * @schema SecretStoreSpecProviderAwsAuth + */ +export interface SecretStoreSpecProviderAwsAuth { + /** + * Authenticate against AWS using service account tokens. + * + * @schema SecretStoreSpecProviderAwsAuth#jwt + */ + readonly jwt?: SecretStoreSpecProviderAwsAuthJwt; + + /** + * AWSAuthSecretRef holds secret references for AWS credentials + * both AccessKeyID and SecretAccessKey must be defined in order to properly authenticate. + * + * @schema SecretStoreSpecProviderAwsAuth#secretRef + */ + readonly secretRef?: SecretStoreSpecProviderAwsAuthSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAwsAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAwsAuth(obj: SecretStoreSpecProviderAwsAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'jwt': toJson_SecretStoreSpecProviderAwsAuthJwt(obj.jwt), + 'secretRef': toJson_SecretStoreSpecProviderAwsAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Service defines which service should be used to fetch the secrets + * + * @schema SecretStoreSpecProviderAwsService + */ +export enum SecretStoreSpecProviderAwsService { + /** SecretsManager */ + SECRETS_MANAGER = "SecretsManager", + /** ParameterStore */ + PARAMETER_STORE = "ParameterStore", +} + +/** + * Auth configures how the operator authenticates with Azure. Required for ServicePrincipal auth type. + * + * @schema SecretStoreSpecProviderAzurekvAuthSecretRef + */ +export interface SecretStoreSpecProviderAzurekvAuthSecretRef { + /** + * The Azure clientId of the service principle used for authentication. + * + * @schema SecretStoreSpecProviderAzurekvAuthSecretRef#clientId + */ + readonly clientId?: SecretStoreSpecProviderAzurekvAuthSecretRefClientId; + + /** + * The Azure ClientSecret of the service principle used for authentication. + * + * @schema SecretStoreSpecProviderAzurekvAuthSecretRef#clientSecret + */ + readonly clientSecret?: SecretStoreSpecProviderAzurekvAuthSecretRefClientSecret; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAzurekvAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAzurekvAuthSecretRef(obj: SecretStoreSpecProviderAzurekvAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientId': toJson_SecretStoreSpecProviderAzurekvAuthSecretRefClientId(obj.clientId), + 'clientSecret': toJson_SecretStoreSpecProviderAzurekvAuthSecretRefClientSecret(obj.clientSecret), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth type defines how to authenticate to the keyvault service. + * Valid values are: + * - "ServicePrincipal" (default): Using a service principal (tenantId, clientId, clientSecret) + * - "ManagedIdentity": Using Managed Identity assigned to the pod (see aad-pod-identity) + * + * @schema SecretStoreSpecProviderAzurekvAuthType + */ +export enum SecretStoreSpecProviderAzurekvAuthType { + /** ServicePrincipal */ + SERVICE_PRINCIPAL = "ServicePrincipal", + /** ManagedIdentity */ + MANAGED_IDENTITY = "ManagedIdentity", + /** WorkloadIdentity */ + WORKLOAD_IDENTITY = "WorkloadIdentity", +} + +/** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema SecretStoreSpecProviderAzurekvServiceAccountRef + */ +export interface SecretStoreSpecProviderAzurekvServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreSpecProviderAzurekvServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreSpecProviderAzurekvServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderAzurekvServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAzurekvServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAzurekvServiceAccountRef(obj: SecretStoreSpecProviderAzurekvServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreSpecProviderFakeData + */ +export interface SecretStoreSpecProviderFakeData { + /** + * @schema SecretStoreSpecProviderFakeData#key + */ + readonly key: string; + + /** + * @schema SecretStoreSpecProviderFakeData#value + */ + readonly value?: string; + + /** + * @schema SecretStoreSpecProviderFakeData#valueMap + */ + readonly valueMap?: { [key: string]: string }; + + /** + * @schema SecretStoreSpecProviderFakeData#version + */ + readonly version?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderFakeData' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderFakeData(obj: SecretStoreSpecProviderFakeData | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'value': obj.value, + 'valueMap': ((obj.valueMap) === undefined) ? undefined : (Object.entries(obj.valueMap).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'version': obj.version, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against GCP + * + * @schema SecretStoreSpecProviderGcpsmAuth + */ +export interface SecretStoreSpecProviderGcpsmAuth { + /** + * @schema SecretStoreSpecProviderGcpsmAuth#secretRef + */ + readonly secretRef?: SecretStoreSpecProviderGcpsmAuthSecretRef; + + /** + * @schema SecretStoreSpecProviderGcpsmAuth#workloadIdentity + */ + readonly workloadIdentity?: SecretStoreSpecProviderGcpsmAuthWorkloadIdentity; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderGcpsmAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderGcpsmAuth(obj: SecretStoreSpecProviderGcpsmAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreSpecProviderGcpsmAuthSecretRef(obj.secretRef), + 'workloadIdentity': toJson_SecretStoreSpecProviderGcpsmAuthWorkloadIdentity(obj.workloadIdentity), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with a GitLab instance. + * + * @schema SecretStoreSpecProviderGitlabAuth + */ +export interface SecretStoreSpecProviderGitlabAuth { + /** + * @schema SecretStoreSpecProviderGitlabAuth#SecretRef + */ + readonly secretRef: SecretStoreSpecProviderGitlabAuthSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderGitlabAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderGitlabAuth(obj: SecretStoreSpecProviderGitlabAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'SecretRef': toJson_SecretStoreSpecProviderGitlabAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with the IBM secrets manager. + * + * @schema SecretStoreSpecProviderIbmAuth + */ +export interface SecretStoreSpecProviderIbmAuth { + /** + * @schema SecretStoreSpecProviderIbmAuth#secretRef + */ + readonly secretRef: SecretStoreSpecProviderIbmAuthSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderIbmAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderIbmAuth(obj: SecretStoreSpecProviderIbmAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreSpecProviderIbmAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with a Kubernetes instance. + * + * @schema SecretStoreSpecProviderKubernetesAuth + */ +export interface SecretStoreSpecProviderKubernetesAuth { + /** + * has both clientCert and clientKey as secretKeySelector + * + * @schema SecretStoreSpecProviderKubernetesAuth#cert + */ + readonly cert?: SecretStoreSpecProviderKubernetesAuthCert; + + /** + * points to a service account that should be used for authentication + * + * @schema SecretStoreSpecProviderKubernetesAuth#serviceAccount + */ + readonly serviceAccount?: SecretStoreSpecProviderKubernetesAuthServiceAccount; + + /** + * use static token to authenticate with + * + * @schema SecretStoreSpecProviderKubernetesAuth#token + */ + readonly token?: SecretStoreSpecProviderKubernetesAuthToken; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderKubernetesAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderKubernetesAuth(obj: SecretStoreSpecProviderKubernetesAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'cert': toJson_SecretStoreSpecProviderKubernetesAuthCert(obj.cert), + 'serviceAccount': toJson_SecretStoreSpecProviderKubernetesAuthServiceAccount(obj.serviceAccount), + 'token': toJson_SecretStoreSpecProviderKubernetesAuthToken(obj.token), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * configures the Kubernetes server Address. + * + * @schema SecretStoreSpecProviderKubernetesServer + */ +export interface SecretStoreSpecProviderKubernetesServer { + /** + * CABundle is a base64-encoded CA certificate + * + * @schema SecretStoreSpecProviderKubernetesServer#caBundle + */ + readonly caBundle?: string; + + /** + * see: https://external-secrets.io/v0.4.1/spec/#external-secrets.io/v1alpha1.CAProvider + * + * @schema SecretStoreSpecProviderKubernetesServer#caProvider + */ + readonly caProvider?: SecretStoreSpecProviderKubernetesServerCaProvider; + + /** + * configures the Kubernetes server Address. + * + * @schema SecretStoreSpecProviderKubernetesServer#url + */ + readonly url?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderKubernetesServer' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderKubernetesServer(obj: SecretStoreSpecProviderKubernetesServer | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'caBundle': obj.caBundle, + 'caProvider': toJson_SecretStoreSpecProviderKubernetesServerCaProvider(obj.caProvider), + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with the Oracle Vault. + * If empty, instance principal is used. Optionally, the authenticating principal type + * and/or user data may be supplied for the use of workload identity and user principal. + * + * @schema SecretStoreSpecProviderOracleAuth + */ +export interface SecretStoreSpecProviderOracleAuth { + /** + * SecretRef to pass through sensitive information. + * + * @schema SecretStoreSpecProviderOracleAuth#secretRef + */ + readonly secretRef: SecretStoreSpecProviderOracleAuthSecretRef; + + /** + * Tenancy is the tenancy OCID where user is located. + * + * @schema SecretStoreSpecProviderOracleAuth#tenancy + */ + readonly tenancy: string; + + /** + * User is an access OCID specific to the account. + * + * @schema SecretStoreSpecProviderOracleAuth#user + */ + readonly user: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderOracleAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderOracleAuth(obj: SecretStoreSpecProviderOracleAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreSpecProviderOracleAuthSecretRef(obj.secretRef), + 'tenancy': obj.tenancy, + 'user': obj.user, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of principal to use for authentication. If left blank, the Auth struct will + * determine the principal type. This optional field must be specified if using + * workload identity. + * + * @schema SecretStoreSpecProviderOraclePrincipalType + */ +export enum SecretStoreSpecProviderOraclePrincipalType { + /** UserPrincipal */ + USER_PRINCIPAL = "UserPrincipal", + /** InstancePrincipal */ + INSTANCE_PRINCIPAL = "InstancePrincipal", + /** Workload */ + WORKLOAD = "Workload", +} + +/** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema SecretStoreSpecProviderOracleServiceAccountRef + */ +export interface SecretStoreSpecProviderOracleServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreSpecProviderOracleServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreSpecProviderOracleServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderOracleServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderOracleServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderOracleServiceAccountRef(obj: SecretStoreSpecProviderOracleServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with a Password Depot instance. + * + * @schema SecretStoreSpecProviderPassworddepotAuth + */ +export interface SecretStoreSpecProviderPassworddepotAuth { + /** + * @schema SecretStoreSpecProviderPassworddepotAuth#secretRef + */ + readonly secretRef: SecretStoreSpecProviderPassworddepotAuthSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderPassworddepotAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderPassworddepotAuth(obj: SecretStoreSpecProviderPassworddepotAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreSpecProviderPassworddepotAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with the Vault server. + * + * @schema SecretStoreSpecProviderVaultAuth + */ +export interface SecretStoreSpecProviderVaultAuth { + /** + * AppRole authenticates with Vault using the App Role auth mechanism, + * with the role and secret stored in a Kubernetes Secret resource. + * + * @schema SecretStoreSpecProviderVaultAuth#appRole + */ + readonly appRole?: SecretStoreSpecProviderVaultAuthAppRole; + + /** + * Cert authenticates with TLS Certificates by passing client certificate, private key and ca certificate + * Cert authentication method + * + * @schema SecretStoreSpecProviderVaultAuth#cert + */ + readonly cert?: SecretStoreSpecProviderVaultAuthCert; + + /** + * Jwt authenticates with Vault by passing role and JWT token using the + * JWT/OIDC authentication method + * + * @schema SecretStoreSpecProviderVaultAuth#jwt + */ + readonly jwt?: SecretStoreSpecProviderVaultAuthJwt; + + /** + * Kubernetes authenticates with Vault by passing the ServiceAccount + * token stored in the named Secret resource to the Vault server. + * + * @schema SecretStoreSpecProviderVaultAuth#kubernetes + */ + readonly kubernetes?: SecretStoreSpecProviderVaultAuthKubernetes; + + /** + * Ldap authenticates with Vault by passing username/password pair using + * the LDAP authentication method + * + * @schema SecretStoreSpecProviderVaultAuth#ldap + */ + readonly ldap?: SecretStoreSpecProviderVaultAuthLdap; + + /** + * TokenSecretRef authenticates with Vault by presenting a token. + * + * @schema SecretStoreSpecProviderVaultAuth#tokenSecretRef + */ + readonly tokenSecretRef?: SecretStoreSpecProviderVaultAuthTokenSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuth(obj: SecretStoreSpecProviderVaultAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'appRole': toJson_SecretStoreSpecProviderVaultAuthAppRole(obj.appRole), + 'cert': toJson_SecretStoreSpecProviderVaultAuthCert(obj.cert), + 'jwt': toJson_SecretStoreSpecProviderVaultAuthJwt(obj.jwt), + 'kubernetes': toJson_SecretStoreSpecProviderVaultAuthKubernetes(obj.kubernetes), + 'ldap': toJson_SecretStoreSpecProviderVaultAuthLdap(obj.ldap), + 'tokenSecretRef': toJson_SecretStoreSpecProviderVaultAuthTokenSecretRef(obj.tokenSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate Vault server certificate. + * + * @schema SecretStoreSpecProviderVaultCaProvider + */ +export interface SecretStoreSpecProviderVaultCaProvider { + /** + * The key the value inside of the provider type to use, only used with "Secret" type + * + * @schema SecretStoreSpecProviderVaultCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema SecretStoreSpecProviderVaultCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * + * @schema SecretStoreSpecProviderVaultCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreSpecProviderVaultCaProvider#type + */ + readonly type: SecretStoreSpecProviderVaultCaProviderType; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultCaProvider(obj: SecretStoreSpecProviderVaultCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Version is the Vault KV secret engine version. This can be either "v1" or + * "v2". Version defaults to "v2". + * + * @schema SecretStoreSpecProviderVaultVersion + */ +export enum SecretStoreSpecProviderVaultVersion { + /** v1 */ + V1 = "v1", + /** v2 */ + V2 = "v2", +} + +/** + * The provider for the CA bundle to use to validate webhook server certificate. + * + * @schema SecretStoreSpecProviderWebhookCaProvider + */ +export interface SecretStoreSpecProviderWebhookCaProvider { + /** + * The key the value inside of the provider type to use, only used with "Secret" type + * + * @schema SecretStoreSpecProviderWebhookCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema SecretStoreSpecProviderWebhookCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * + * @schema SecretStoreSpecProviderWebhookCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreSpecProviderWebhookCaProvider#type + */ + readonly type: SecretStoreSpecProviderWebhookCaProviderType; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderWebhookCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderWebhookCaProvider(obj: SecretStoreSpecProviderWebhookCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Result formatting + * + * @schema SecretStoreSpecProviderWebhookResult + */ +export interface SecretStoreSpecProviderWebhookResult { + /** + * Json path of return value + * + * @schema SecretStoreSpecProviderWebhookResult#jsonPath + */ + readonly jsonPath?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderWebhookResult' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderWebhookResult(obj: SecretStoreSpecProviderWebhookResult | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'jsonPath': obj.jsonPath, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreSpecProviderWebhookSecrets + */ +export interface SecretStoreSpecProviderWebhookSecrets { + /** + * Name of this secret in templates + * + * @schema SecretStoreSpecProviderWebhookSecrets#name + */ + readonly name: string; + + /** + * Secret ref to fill in credentials + * + * @schema SecretStoreSpecProviderWebhookSecrets#secretRef + */ + readonly secretRef: SecretStoreSpecProviderWebhookSecretsSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderWebhookSecrets' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderWebhookSecrets(obj: SecretStoreSpecProviderWebhookSecrets | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'name': obj.name, + 'secretRef': toJson_SecretStoreSpecProviderWebhookSecretsSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against Yandex Lockbox + * + * @schema SecretStoreSpecProviderYandexlockboxAuth + */ +export interface SecretStoreSpecProviderYandexlockboxAuth { + /** + * The authorized key used for authentication + * + * @schema SecretStoreSpecProviderYandexlockboxAuth#authorizedKeySecretRef + */ + readonly authorizedKeySecretRef?: SecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderYandexlockboxAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderYandexlockboxAuth(obj: SecretStoreSpecProviderYandexlockboxAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'authorizedKeySecretRef': toJson_SecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef(obj.authorizedKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate Yandex.Cloud server certificate. + * + * @schema SecretStoreSpecProviderYandexlockboxCaProvider + */ +export interface SecretStoreSpecProviderYandexlockboxCaProvider { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreSpecProviderYandexlockboxCaProvider#certSecretRef + */ + readonly certSecretRef?: SecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderYandexlockboxCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderYandexlockboxCaProvider(obj: SecretStoreSpecProviderYandexlockboxCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'certSecretRef': toJson_SecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef(obj.certSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Kubernetes authenticates with Akeyless by passing the ServiceAccount + * token stored in the named Secret resource. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth + */ +export interface SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth { + /** + * the Akeyless Kubernetes auth-method access-id + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth#accessID + */ + readonly accessId: string; + + /** + * Kubernetes-auth configuration name in Akeyless-Gateway + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth#k8sConfName + */ + readonly k8SConfName: string; + + /** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Akeyless. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth#secretRef + */ + readonly secretRef?: SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef; + + /** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Akeyless. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth#serviceAccountRef + */ + readonly serviceAccountRef?: SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth(obj: SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessID': obj.accessId, + 'k8sConfName': obj.k8SConfName, + 'secretRef': toJson_SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef(obj.secretRef), + 'serviceAccountRef': toJson_SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Reference to a Secret that contains the details + * to authenticate with Akeyless. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRef + */ +export interface SecretStoreSpecProviderAkeylessAuthSecretRefSecretRef { + /** + * The SecretAccessID is used for authentication + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRef#accessID + */ + readonly accessId?: SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRef#accessType + */ + readonly accessType?: SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRef#accessTypeParam + */ + readonly accessTypeParam?: SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAkeylessAuthSecretRefSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAkeylessAuthSecretRefSecretRef(obj: SecretStoreSpecProviderAkeylessAuthSecretRefSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessID': toJson_SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId(obj.accessId), + 'accessType': toJson_SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType(obj.accessType), + 'accessTypeParam': toJson_SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam(obj.accessTypeParam), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreSpecProviderAkeylessCaProviderType + */ +export enum SecretStoreSpecProviderAkeylessCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * Authenticate against Alibaba using RRSA. + * + * @schema SecretStoreSpecProviderAlibabaAuthRrsa + */ +export interface SecretStoreSpecProviderAlibabaAuthRrsa { + /** + * @schema SecretStoreSpecProviderAlibabaAuthRrsa#oidcProviderArn + */ + readonly oidcProviderArn: string; + + /** + * @schema SecretStoreSpecProviderAlibabaAuthRrsa#oidcTokenFilePath + */ + readonly oidcTokenFilePath: string; + + /** + * @schema SecretStoreSpecProviderAlibabaAuthRrsa#roleArn + */ + readonly roleArn: string; + + /** + * @schema SecretStoreSpecProviderAlibabaAuthRrsa#sessionName + */ + readonly sessionName: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAlibabaAuthRrsa' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAlibabaAuthRrsa(obj: SecretStoreSpecProviderAlibabaAuthRrsa | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'oidcProviderArn': obj.oidcProviderArn, + 'oidcTokenFilePath': obj.oidcTokenFilePath, + 'roleArn': obj.roleArn, + 'sessionName': obj.sessionName, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AlibabaAuthSecretRef holds secret references for Alibaba credentials. + * + * @schema SecretStoreSpecProviderAlibabaAuthSecretRef + */ +export interface SecretStoreSpecProviderAlibabaAuthSecretRef { + /** + * The AccessKeyID is used for authentication + * + * @schema SecretStoreSpecProviderAlibabaAuthSecretRef#accessKeyIDSecretRef + */ + readonly accessKeyIdSecretRef: SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef; + + /** + * The AccessKeySecret is used for authentication + * + * @schema SecretStoreSpecProviderAlibabaAuthSecretRef#accessKeySecretSecretRef + */ + readonly accessKeySecretSecretRef: SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAlibabaAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAlibabaAuthSecretRef(obj: SecretStoreSpecProviderAlibabaAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessKeyIDSecretRef': toJson_SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef(obj.accessKeyIdSecretRef), + 'accessKeySecretSecretRef': toJson_SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef(obj.accessKeySecretSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Authenticate against AWS using service account tokens. + * + * @schema SecretStoreSpecProviderAwsAuthJwt + */ +export interface SecretStoreSpecProviderAwsAuthJwt { + /** + * A reference to a ServiceAccount resource. + * + * @schema SecretStoreSpecProviderAwsAuthJwt#serviceAccountRef + */ + readonly serviceAccountRef?: SecretStoreSpecProviderAwsAuthJwtServiceAccountRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAwsAuthJwt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAwsAuthJwt(obj: SecretStoreSpecProviderAwsAuthJwt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'serviceAccountRef': toJson_SecretStoreSpecProviderAwsAuthJwtServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AWSAuthSecretRef holds secret references for AWS credentials + * both AccessKeyID and SecretAccessKey must be defined in order to properly authenticate. + * + * @schema SecretStoreSpecProviderAwsAuthSecretRef + */ +export interface SecretStoreSpecProviderAwsAuthSecretRef { + /** + * The AccessKeyID is used for authentication + * + * @schema SecretStoreSpecProviderAwsAuthSecretRef#accessKeyIDSecretRef + */ + readonly accessKeyIdSecretRef?: SecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef; + + /** + * The SecretAccessKey is used for authentication + * + * @schema SecretStoreSpecProviderAwsAuthSecretRef#secretAccessKeySecretRef + */ + readonly secretAccessKeySecretRef?: SecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAwsAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAwsAuthSecretRef(obj: SecretStoreSpecProviderAwsAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessKeyIDSecretRef': toJson_SecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef(obj.accessKeyIdSecretRef), + 'secretAccessKeySecretRef': toJson_SecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef(obj.secretAccessKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The Azure clientId of the service principle used for authentication. + * + * @schema SecretStoreSpecProviderAzurekvAuthSecretRefClientId + */ +export interface SecretStoreSpecProviderAzurekvAuthSecretRefClientId { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderAzurekvAuthSecretRefClientId#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderAzurekvAuthSecretRefClientId#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderAzurekvAuthSecretRefClientId#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAzurekvAuthSecretRefClientId' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAzurekvAuthSecretRefClientId(obj: SecretStoreSpecProviderAzurekvAuthSecretRefClientId | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The Azure ClientSecret of the service principle used for authentication. + * + * @schema SecretStoreSpecProviderAzurekvAuthSecretRefClientSecret + */ +export interface SecretStoreSpecProviderAzurekvAuthSecretRefClientSecret { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderAzurekvAuthSecretRefClientSecret#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderAzurekvAuthSecretRefClientSecret#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderAzurekvAuthSecretRefClientSecret#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAzurekvAuthSecretRefClientSecret' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAzurekvAuthSecretRefClientSecret(obj: SecretStoreSpecProviderAzurekvAuthSecretRefClientSecret | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreSpecProviderGcpsmAuthSecretRef + */ +export interface SecretStoreSpecProviderGcpsmAuthSecretRef { + /** + * The SecretAccessKey is used for authentication + * + * @schema SecretStoreSpecProviderGcpsmAuthSecretRef#secretAccessKeySecretRef + */ + readonly secretAccessKeySecretRef?: SecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderGcpsmAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderGcpsmAuthSecretRef(obj: SecretStoreSpecProviderGcpsmAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretAccessKeySecretRef': toJson_SecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef(obj.secretAccessKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreSpecProviderGcpsmAuthWorkloadIdentity + */ +export interface SecretStoreSpecProviderGcpsmAuthWorkloadIdentity { + /** + * @schema SecretStoreSpecProviderGcpsmAuthWorkloadIdentity#clusterLocation + */ + readonly clusterLocation: string; + + /** + * @schema SecretStoreSpecProviderGcpsmAuthWorkloadIdentity#clusterName + */ + readonly clusterName: string; + + /** + * @schema SecretStoreSpecProviderGcpsmAuthWorkloadIdentity#clusterProjectID + */ + readonly clusterProjectId?: string; + + /** + * A reference to a ServiceAccount resource. + * + * @schema SecretStoreSpecProviderGcpsmAuthWorkloadIdentity#serviceAccountRef + */ + readonly serviceAccountRef: SecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderGcpsmAuthWorkloadIdentity' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderGcpsmAuthWorkloadIdentity(obj: SecretStoreSpecProviderGcpsmAuthWorkloadIdentity | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clusterLocation': obj.clusterLocation, + 'clusterName': obj.clusterName, + 'clusterProjectID': obj.clusterProjectId, + 'serviceAccountRef': toJson_SecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreSpecProviderGitlabAuthSecretRef + */ +export interface SecretStoreSpecProviderGitlabAuthSecretRef { + /** + * AccessToken is used for authentication. + * + * @schema SecretStoreSpecProviderGitlabAuthSecretRef#accessToken + */ + readonly accessToken?: SecretStoreSpecProviderGitlabAuthSecretRefAccessToken; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderGitlabAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderGitlabAuthSecretRef(obj: SecretStoreSpecProviderGitlabAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessToken': toJson_SecretStoreSpecProviderGitlabAuthSecretRefAccessToken(obj.accessToken), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreSpecProviderIbmAuthSecretRef + */ +export interface SecretStoreSpecProviderIbmAuthSecretRef { + /** + * The SecretAccessKey is used for authentication + * + * @schema SecretStoreSpecProviderIbmAuthSecretRef#secretApiKeySecretRef + */ + readonly secretApiKeySecretRef?: SecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderIbmAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderIbmAuthSecretRef(obj: SecretStoreSpecProviderIbmAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretApiKeySecretRef': toJson_SecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef(obj.secretApiKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * has both clientCert and clientKey as secretKeySelector + * + * @schema SecretStoreSpecProviderKubernetesAuthCert + */ +export interface SecretStoreSpecProviderKubernetesAuthCert { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreSpecProviderKubernetesAuthCert#clientCert + */ + readonly clientCert?: SecretStoreSpecProviderKubernetesAuthCertClientCert; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreSpecProviderKubernetesAuthCert#clientKey + */ + readonly clientKey?: SecretStoreSpecProviderKubernetesAuthCertClientKey; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderKubernetesAuthCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderKubernetesAuthCert(obj: SecretStoreSpecProviderKubernetesAuthCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientCert': toJson_SecretStoreSpecProviderKubernetesAuthCertClientCert(obj.clientCert), + 'clientKey': toJson_SecretStoreSpecProviderKubernetesAuthCertClientKey(obj.clientKey), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * points to a service account that should be used for authentication + * + * @schema SecretStoreSpecProviderKubernetesAuthServiceAccount + */ +export interface SecretStoreSpecProviderKubernetesAuthServiceAccount { + /** + * A reference to a ServiceAccount resource. + * + * @schema SecretStoreSpecProviderKubernetesAuthServiceAccount#serviceAccount + */ + readonly serviceAccount?: SecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderKubernetesAuthServiceAccount' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderKubernetesAuthServiceAccount(obj: SecretStoreSpecProviderKubernetesAuthServiceAccount | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'serviceAccount': toJson_SecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount(obj.serviceAccount), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * use static token to authenticate with + * + * @schema SecretStoreSpecProviderKubernetesAuthToken + */ +export interface SecretStoreSpecProviderKubernetesAuthToken { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreSpecProviderKubernetesAuthToken#bearerToken + */ + readonly bearerToken?: SecretStoreSpecProviderKubernetesAuthTokenBearerToken; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderKubernetesAuthToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderKubernetesAuthToken(obj: SecretStoreSpecProviderKubernetesAuthToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'bearerToken': toJson_SecretStoreSpecProviderKubernetesAuthTokenBearerToken(obj.bearerToken), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * see: https://external-secrets.io/v0.4.1/spec/#external-secrets.io/v1alpha1.CAProvider + * + * @schema SecretStoreSpecProviderKubernetesServerCaProvider + */ +export interface SecretStoreSpecProviderKubernetesServerCaProvider { + /** + * The key the value inside of the provider type to use, only used with "Secret" type + * + * @schema SecretStoreSpecProviderKubernetesServerCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema SecretStoreSpecProviderKubernetesServerCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * + * @schema SecretStoreSpecProviderKubernetesServerCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreSpecProviderKubernetesServerCaProvider#type + */ + readonly type: SecretStoreSpecProviderKubernetesServerCaProviderType; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderKubernetesServerCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderKubernetesServerCaProvider(obj: SecretStoreSpecProviderKubernetesServerCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to pass through sensitive information. + * + * @schema SecretStoreSpecProviderOracleAuthSecretRef + */ +export interface SecretStoreSpecProviderOracleAuthSecretRef { + /** + * Fingerprint is the fingerprint of the API private key. + * + * @schema SecretStoreSpecProviderOracleAuthSecretRef#fingerprint + */ + readonly fingerprint: SecretStoreSpecProviderOracleAuthSecretRefFingerprint; + + /** + * PrivateKey is the user's API Signing Key in PEM format, used for authentication. + * + * @schema SecretStoreSpecProviderOracleAuthSecretRef#privatekey + */ + readonly privatekey: SecretStoreSpecProviderOracleAuthSecretRefPrivatekey; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderOracleAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderOracleAuthSecretRef(obj: SecretStoreSpecProviderOracleAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'fingerprint': toJson_SecretStoreSpecProviderOracleAuthSecretRefFingerprint(obj.fingerprint), + 'privatekey': toJson_SecretStoreSpecProviderOracleAuthSecretRefPrivatekey(obj.privatekey), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreSpecProviderPassworddepotAuthSecretRef + */ +export interface SecretStoreSpecProviderPassworddepotAuthSecretRef { + /** + * Username / Password is used for authentication. + * + * @schema SecretStoreSpecProviderPassworddepotAuthSecretRef#credentials + */ + readonly credentials?: SecretStoreSpecProviderPassworddepotAuthSecretRefCredentials; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderPassworddepotAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderPassworddepotAuthSecretRef(obj: SecretStoreSpecProviderPassworddepotAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'credentials': toJson_SecretStoreSpecProviderPassworddepotAuthSecretRefCredentials(obj.credentials), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AppRole authenticates with Vault using the App Role auth mechanism, + * with the role and secret stored in a Kubernetes Secret resource. + * + * @schema SecretStoreSpecProviderVaultAuthAppRole + */ +export interface SecretStoreSpecProviderVaultAuthAppRole { + /** + * Path where the App Role authentication backend is mounted + * in Vault, e.g: "approle" + * + * @schema SecretStoreSpecProviderVaultAuthAppRole#path + */ + readonly path: string; + + /** + * RoleID configured in the App Role authentication backend when setting + * up the authentication backend in Vault. + * + * @schema SecretStoreSpecProviderVaultAuthAppRole#roleId + */ + readonly roleId: string; + + /** + * Reference to a key in a Secret that contains the App Role secret used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role secret. + * + * @schema SecretStoreSpecProviderVaultAuthAppRole#secretRef + */ + readonly secretRef: SecretStoreSpecProviderVaultAuthAppRoleSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuthAppRole' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuthAppRole(obj: SecretStoreSpecProviderVaultAuthAppRole | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'path': obj.path, + 'roleId': obj.roleId, + 'secretRef': toJson_SecretStoreSpecProviderVaultAuthAppRoleSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Cert authenticates with TLS Certificates by passing client certificate, private key and ca certificate + * Cert authentication method + * + * @schema SecretStoreSpecProviderVaultAuthCert + */ +export interface SecretStoreSpecProviderVaultAuthCert { + /** + * ClientCert is a certificate to authenticate using the Cert Vault + * authentication method + * + * @schema SecretStoreSpecProviderVaultAuthCert#clientCert + */ + readonly clientCert?: SecretStoreSpecProviderVaultAuthCertClientCert; + + /** + * SecretRef to a key in a Secret resource containing client private key to + * authenticate with Vault using the Cert authentication method + * + * @schema SecretStoreSpecProviderVaultAuthCert#secretRef + */ + readonly secretRef?: SecretStoreSpecProviderVaultAuthCertSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuthCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuthCert(obj: SecretStoreSpecProviderVaultAuthCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientCert': toJson_SecretStoreSpecProviderVaultAuthCertClientCert(obj.clientCert), + 'secretRef': toJson_SecretStoreSpecProviderVaultAuthCertSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Jwt authenticates with Vault by passing role and JWT token using the + * JWT/OIDC authentication method + * + * @schema SecretStoreSpecProviderVaultAuthJwt + */ +export interface SecretStoreSpecProviderVaultAuthJwt { + /** + * Optional ServiceAccountToken specifies the Kubernetes service account for which to request + * a token for with the `TokenRequest` API. + * + * @schema SecretStoreSpecProviderVaultAuthJwt#kubernetesServiceAccountToken + */ + readonly kubernetesServiceAccountToken?: SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken; + + /** + * Path where the JWT authentication backend is mounted + * in Vault, e.g: "jwt" + * + * @schema SecretStoreSpecProviderVaultAuthJwt#path + */ + readonly path: string; + + /** + * Role is a JWT role to authenticate using the JWT/OIDC Vault + * authentication method + * + * @schema SecretStoreSpecProviderVaultAuthJwt#role + */ + readonly role?: string; + + /** + * Optional SecretRef that refers to a key in a Secret resource containing JWT token to + * authenticate with Vault using the JWT/OIDC authentication method. + * + * @schema SecretStoreSpecProviderVaultAuthJwt#secretRef + */ + readonly secretRef?: SecretStoreSpecProviderVaultAuthJwtSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuthJwt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuthJwt(obj: SecretStoreSpecProviderVaultAuthJwt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kubernetesServiceAccountToken': toJson_SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken(obj.kubernetesServiceAccountToken), + 'path': obj.path, + 'role': obj.role, + 'secretRef': toJson_SecretStoreSpecProviderVaultAuthJwtSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Kubernetes authenticates with Vault by passing the ServiceAccount + * token stored in the named Secret resource to the Vault server. + * + * @schema SecretStoreSpecProviderVaultAuthKubernetes + */ +export interface SecretStoreSpecProviderVaultAuthKubernetes { + /** + * Path where the Kubernetes authentication backend is mounted in Vault, e.g: + * "kubernetes" + * + * @schema SecretStoreSpecProviderVaultAuthKubernetes#mountPath + */ + readonly mountPath: string; + + /** + * A required field containing the Vault Role to assume. A Role binds a + * Kubernetes ServiceAccount with a set of Vault policies. + * + * @schema SecretStoreSpecProviderVaultAuthKubernetes#role + */ + readonly role: string; + + /** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Vault. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema SecretStoreSpecProviderVaultAuthKubernetes#secretRef + */ + readonly secretRef?: SecretStoreSpecProviderVaultAuthKubernetesSecretRef; + + /** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Vault. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema SecretStoreSpecProviderVaultAuthKubernetes#serviceAccountRef + */ + readonly serviceAccountRef?: SecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuthKubernetes' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuthKubernetes(obj: SecretStoreSpecProviderVaultAuthKubernetes | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'mountPath': obj.mountPath, + 'role': obj.role, + 'secretRef': toJson_SecretStoreSpecProviderVaultAuthKubernetesSecretRef(obj.secretRef), + 'serviceAccountRef': toJson_SecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Ldap authenticates with Vault by passing username/password pair using + * the LDAP authentication method + * + * @schema SecretStoreSpecProviderVaultAuthLdap + */ +export interface SecretStoreSpecProviderVaultAuthLdap { + /** + * Path where the LDAP authentication backend is mounted + * in Vault, e.g: "ldap" + * + * @schema SecretStoreSpecProviderVaultAuthLdap#path + */ + readonly path: string; + + /** + * SecretRef to a key in a Secret resource containing password for the LDAP + * user used to authenticate with Vault using the LDAP authentication + * method + * + * @schema SecretStoreSpecProviderVaultAuthLdap#secretRef + */ + readonly secretRef?: SecretStoreSpecProviderVaultAuthLdapSecretRef; + + /** + * Username is a LDAP user name used to authenticate using the LDAP Vault + * authentication method + * + * @schema SecretStoreSpecProviderVaultAuthLdap#username + */ + readonly username: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuthLdap' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuthLdap(obj: SecretStoreSpecProviderVaultAuthLdap | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'path': obj.path, + 'secretRef': toJson_SecretStoreSpecProviderVaultAuthLdapSecretRef(obj.secretRef), + 'username': obj.username, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * TokenSecretRef authenticates with Vault by presenting a token. + * + * @schema SecretStoreSpecProviderVaultAuthTokenSecretRef + */ +export interface SecretStoreSpecProviderVaultAuthTokenSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderVaultAuthTokenSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderVaultAuthTokenSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderVaultAuthTokenSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuthTokenSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuthTokenSecretRef(obj: SecretStoreSpecProviderVaultAuthTokenSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreSpecProviderVaultCaProviderType + */ +export enum SecretStoreSpecProviderVaultCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreSpecProviderWebhookCaProviderType + */ +export enum SecretStoreSpecProviderWebhookCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * Secret ref to fill in credentials + * + * @schema SecretStoreSpecProviderWebhookSecretsSecretRef + */ +export interface SecretStoreSpecProviderWebhookSecretsSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderWebhookSecretsSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderWebhookSecretsSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderWebhookSecretsSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderWebhookSecretsSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderWebhookSecretsSecretRef(obj: SecretStoreSpecProviderWebhookSecretsSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The authorized key used for authentication + * + * @schema SecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef + */ +export interface SecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef(obj: SecretStoreSpecProviderYandexlockboxAuthAuthorizedKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef + */ +export interface SecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef(obj: SecretStoreSpecProviderYandexlockboxCaProviderCertSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Akeyless. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef + */ +export interface SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef(obj: SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Akeyless. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef + */ +export interface SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef(obj: SecretStoreSpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessID is used for authentication + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId + */ +export interface SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId(obj: SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessId | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType + */ +export interface SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType(obj: SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessType | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam + */ +export interface SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam(obj: SecretStoreSpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeyID is used for authentication + * + * @schema SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef + */ +export interface SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef(obj: SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeySecret is used for authentication + * + * @schema SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef + */ +export interface SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef(obj: SecretStoreSpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a ServiceAccount resource. + * + * @schema SecretStoreSpecProviderAwsAuthJwtServiceAccountRef + */ +export interface SecretStoreSpecProviderAwsAuthJwtServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreSpecProviderAwsAuthJwtServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreSpecProviderAwsAuthJwtServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderAwsAuthJwtServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAwsAuthJwtServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAwsAuthJwtServiceAccountRef(obj: SecretStoreSpecProviderAwsAuthJwtServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeyID is used for authentication + * + * @schema SecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef + */ +export interface SecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef(obj: SecretStoreSpecProviderAwsAuthSecretRefAccessKeyIdSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema SecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef + */ +export interface SecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef(obj: SecretStoreSpecProviderAwsAuthSecretRefSecretAccessKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema SecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef + */ +export interface SecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef(obj: SecretStoreSpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a ServiceAccount resource. + * + * @schema SecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef + */ +export interface SecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef(obj: SecretStoreSpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AccessToken is used for authentication. + * + * @schema SecretStoreSpecProviderGitlabAuthSecretRefAccessToken + */ +export interface SecretStoreSpecProviderGitlabAuthSecretRefAccessToken { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderGitlabAuthSecretRefAccessToken#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderGitlabAuthSecretRefAccessToken#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderGitlabAuthSecretRefAccessToken#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderGitlabAuthSecretRefAccessToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderGitlabAuthSecretRefAccessToken(obj: SecretStoreSpecProviderGitlabAuthSecretRefAccessToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema SecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef + */ +export interface SecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef(obj: SecretStoreSpecProviderIbmAuthSecretRefSecretApiKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreSpecProviderKubernetesAuthCertClientCert + */ +export interface SecretStoreSpecProviderKubernetesAuthCertClientCert { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderKubernetesAuthCertClientCert#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderKubernetesAuthCertClientCert#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderKubernetesAuthCertClientCert#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderKubernetesAuthCertClientCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderKubernetesAuthCertClientCert(obj: SecretStoreSpecProviderKubernetesAuthCertClientCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreSpecProviderKubernetesAuthCertClientKey + */ +export interface SecretStoreSpecProviderKubernetesAuthCertClientKey { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderKubernetesAuthCertClientKey#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderKubernetesAuthCertClientKey#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderKubernetesAuthCertClientKey#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderKubernetesAuthCertClientKey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderKubernetesAuthCertClientKey(obj: SecretStoreSpecProviderKubernetesAuthCertClientKey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a ServiceAccount resource. + * + * @schema SecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount + */ +export interface SecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount(obj: SecretStoreSpecProviderKubernetesAuthServiceAccountServiceAccount | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreSpecProviderKubernetesAuthTokenBearerToken + */ +export interface SecretStoreSpecProviderKubernetesAuthTokenBearerToken { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderKubernetesAuthTokenBearerToken#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderKubernetesAuthTokenBearerToken#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderKubernetesAuthTokenBearerToken#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderKubernetesAuthTokenBearerToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderKubernetesAuthTokenBearerToken(obj: SecretStoreSpecProviderKubernetesAuthTokenBearerToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreSpecProviderKubernetesServerCaProviderType + */ +export enum SecretStoreSpecProviderKubernetesServerCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * Fingerprint is the fingerprint of the API private key. + * + * @schema SecretStoreSpecProviderOracleAuthSecretRefFingerprint + */ +export interface SecretStoreSpecProviderOracleAuthSecretRefFingerprint { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderOracleAuthSecretRefFingerprint#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderOracleAuthSecretRefFingerprint#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderOracleAuthSecretRefFingerprint#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderOracleAuthSecretRefFingerprint' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderOracleAuthSecretRefFingerprint(obj: SecretStoreSpecProviderOracleAuthSecretRefFingerprint | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * PrivateKey is the user's API Signing Key in PEM format, used for authentication. + * + * @schema SecretStoreSpecProviderOracleAuthSecretRefPrivatekey + */ +export interface SecretStoreSpecProviderOracleAuthSecretRefPrivatekey { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderOracleAuthSecretRefPrivatekey#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderOracleAuthSecretRefPrivatekey#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderOracleAuthSecretRefPrivatekey#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderOracleAuthSecretRefPrivatekey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderOracleAuthSecretRefPrivatekey(obj: SecretStoreSpecProviderOracleAuthSecretRefPrivatekey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Username / Password is used for authentication. + * + * @schema SecretStoreSpecProviderPassworddepotAuthSecretRefCredentials + */ +export interface SecretStoreSpecProviderPassworddepotAuthSecretRefCredentials { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderPassworddepotAuthSecretRefCredentials#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderPassworddepotAuthSecretRefCredentials#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderPassworddepotAuthSecretRefCredentials#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderPassworddepotAuthSecretRefCredentials' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderPassworddepotAuthSecretRefCredentials(obj: SecretStoreSpecProviderPassworddepotAuthSecretRefCredentials | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Reference to a key in a Secret that contains the App Role secret used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role secret. + * + * @schema SecretStoreSpecProviderVaultAuthAppRoleSecretRef + */ +export interface SecretStoreSpecProviderVaultAuthAppRoleSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderVaultAuthAppRoleSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderVaultAuthAppRoleSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderVaultAuthAppRoleSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuthAppRoleSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuthAppRoleSecretRef(obj: SecretStoreSpecProviderVaultAuthAppRoleSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ClientCert is a certificate to authenticate using the Cert Vault + * authentication method + * + * @schema SecretStoreSpecProviderVaultAuthCertClientCert + */ +export interface SecretStoreSpecProviderVaultAuthCertClientCert { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderVaultAuthCertClientCert#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderVaultAuthCertClientCert#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderVaultAuthCertClientCert#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuthCertClientCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuthCertClientCert(obj: SecretStoreSpecProviderVaultAuthCertClientCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to a key in a Secret resource containing client private key to + * authenticate with Vault using the Cert authentication method + * + * @schema SecretStoreSpecProviderVaultAuthCertSecretRef + */ +export interface SecretStoreSpecProviderVaultAuthCertSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderVaultAuthCertSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderVaultAuthCertSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderVaultAuthCertSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuthCertSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuthCertSecretRef(obj: SecretStoreSpecProviderVaultAuthCertSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional ServiceAccountToken specifies the Kubernetes service account for which to request + * a token for with the `TokenRequest` API. + * + * @schema SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken + */ +export interface SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken { + /** + * Optional audiences field that will be used to request a temporary Kubernetes service + * account token for the service account referenced by `serviceAccountRef`. + * Defaults to a single audience `vault` it not specified. + * + * @default a single audience `vault` it not specified. + * @schema SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken#audiences + */ + readonly audiences?: string[]; + + /** + * Optional expiration time in seconds that will be used to request a temporary + * Kubernetes service account token for the service account referenced by + * `serviceAccountRef`. + * Defaults to 10 minutes. + * + * @default 10 minutes. + * @schema SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken#expirationSeconds + */ + readonly expirationSeconds?: number; + + /** + * Service account field containing the name of a kubernetes ServiceAccount. + * + * @schema SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken#serviceAccountRef + */ + readonly serviceAccountRef: SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken(obj: SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'expirationSeconds': obj.expirationSeconds, + 'serviceAccountRef': toJson_SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional SecretRef that refers to a key in a Secret resource containing JWT token to + * authenticate with Vault using the JWT/OIDC authentication method. + * + * @schema SecretStoreSpecProviderVaultAuthJwtSecretRef + */ +export interface SecretStoreSpecProviderVaultAuthJwtSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderVaultAuthJwtSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderVaultAuthJwtSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderVaultAuthJwtSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuthJwtSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuthJwtSecretRef(obj: SecretStoreSpecProviderVaultAuthJwtSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Vault. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema SecretStoreSpecProviderVaultAuthKubernetesSecretRef + */ +export interface SecretStoreSpecProviderVaultAuthKubernetesSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderVaultAuthKubernetesSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderVaultAuthKubernetesSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderVaultAuthKubernetesSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuthKubernetesSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuthKubernetesSecretRef(obj: SecretStoreSpecProviderVaultAuthKubernetesSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Vault. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema SecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef + */ +export interface SecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef(obj: SecretStoreSpecProviderVaultAuthKubernetesServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to a key in a Secret resource containing password for the LDAP + * user used to authenticate with Vault using the LDAP authentication + * method + * + * @schema SecretStoreSpecProviderVaultAuthLdapSecretRef + */ +export interface SecretStoreSpecProviderVaultAuthLdapSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreSpecProviderVaultAuthLdapSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreSpecProviderVaultAuthLdapSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderVaultAuthLdapSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuthLdapSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuthLdapSecretRef(obj: SecretStoreSpecProviderVaultAuthLdapSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Service account field containing the name of a kubernetes ServiceAccount. + * + * @schema SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef + */ +export interface SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef(obj: SecretStoreSpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * SecretStore represents a secure external location for storing secrets, which can be referenced as part of `storeRef` fields. + * + * @schema SecretStoreV1Beta1 + */ +export class SecretStoreV1Beta1 extends ApiObject { + /** + * Returns the apiVersion and kind for "SecretStoreV1Beta1" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'external-secrets.io/v1beta1', + kind: 'SecretStore', + } + + /** + * Renders a Kubernetes manifest for "SecretStoreV1Beta1". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: SecretStoreV1Beta1Props = {}): any { + return { + ...SecretStoreV1Beta1.GVK, + ...toJson_SecretStoreV1Beta1Props(props), + }; + } + + /** + * Defines a "SecretStoreV1Beta1" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: SecretStoreV1Beta1Props = {}) { + super(scope, id, { + ...SecretStoreV1Beta1.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...SecretStoreV1Beta1.GVK, + ...toJson_SecretStoreV1Beta1Props(resolved), + }; + } +} + +/** + * SecretStore represents a secure external location for storing secrets, which can be referenced as part of `storeRef` fields. + * + * @schema SecretStoreV1Beta1 + */ +export interface SecretStoreV1Beta1Props { + /** + * @schema SecretStoreV1Beta1#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * SecretStoreSpec defines the desired state of SecretStore. + * + * @schema SecretStoreV1Beta1#spec + */ + readonly spec?: SecretStoreV1Beta1Spec; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1Props' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1Props(obj: SecretStoreV1Beta1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_SecretStoreV1Beta1Spec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretStoreSpec defines the desired state of SecretStore. + * + * @schema SecretStoreV1Beta1Spec + */ +export interface SecretStoreV1Beta1Spec { + /** + * Used to constraint a ClusterSecretStore to specific namespaces. Relevant only to ClusterSecretStore + * + * @schema SecretStoreV1Beta1Spec#conditions + */ + readonly conditions?: SecretStoreV1Beta1SpecConditions[]; + + /** + * Used to select the correct ESO controller (think: ingress.ingressClassName) + * The ESO controller is instantiated with a specific controller name and filters ES based on this property + * + * @schema SecretStoreV1Beta1Spec#controller + */ + readonly controller?: string; + + /** + * Used to configure the provider. Only one provider may be set + * + * @schema SecretStoreV1Beta1Spec#provider + */ + readonly provider: SecretStoreV1Beta1SpecProvider; + + /** + * Used to configure store refresh interval in seconds. Empty or 0 will default to the controller config. + * + * @schema SecretStoreV1Beta1Spec#refreshInterval + */ + readonly refreshInterval?: number; + + /** + * Used to configure http retries if failed + * + * @schema SecretStoreV1Beta1Spec#retrySettings + */ + readonly retrySettings?: SecretStoreV1Beta1SpecRetrySettings; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1Spec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1Spec(obj: SecretStoreV1Beta1Spec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'conditions': obj.conditions?.map(y => toJson_SecretStoreV1Beta1SpecConditions(y)), + 'controller': obj.controller, + 'provider': toJson_SecretStoreV1Beta1SpecProvider(obj.provider), + 'refreshInterval': obj.refreshInterval, + 'retrySettings': toJson_SecretStoreV1Beta1SpecRetrySettings(obj.retrySettings), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ClusterSecretStoreCondition describes a condition by which to choose namespaces to process ExternalSecrets in + * for a ClusterSecretStore instance. + * + * @schema SecretStoreV1Beta1SpecConditions + */ +export interface SecretStoreV1Beta1SpecConditions { + /** + * Choose namespace using a labelSelector + * + * @schema SecretStoreV1Beta1SpecConditions#namespaceSelector + */ + readonly namespaceSelector?: SecretStoreV1Beta1SpecConditionsNamespaceSelector; + + /** + * Choose namespaces by name + * + * @schema SecretStoreV1Beta1SpecConditions#namespaces + */ + readonly namespaces?: string[]; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecConditions' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecConditions(obj: SecretStoreV1Beta1SpecConditions | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'namespaceSelector': toJson_SecretStoreV1Beta1SpecConditionsNamespaceSelector(obj.namespaceSelector), + 'namespaces': obj.namespaces?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to configure the provider. Only one provider may be set + * + * @schema SecretStoreV1Beta1SpecProvider + */ +export interface SecretStoreV1Beta1SpecProvider { + /** + * Akeyless configures this store to sync secrets using Akeyless Vault provider + * + * @schema SecretStoreV1Beta1SpecProvider#akeyless + */ + readonly akeyless?: SecretStoreV1Beta1SpecProviderAkeyless; + + /** + * Alibaba configures this store to sync secrets using Alibaba Cloud provider + * + * @schema SecretStoreV1Beta1SpecProvider#alibaba + */ + readonly alibaba?: SecretStoreV1Beta1SpecProviderAlibaba; + + /** + * AWS configures this store to sync secrets using AWS Secret Manager provider + * + * @schema SecretStoreV1Beta1SpecProvider#aws + */ + readonly aws?: SecretStoreV1Beta1SpecProviderAws; + + /** + * AzureKV configures this store to sync secrets using Azure Key Vault provider + * + * @schema SecretStoreV1Beta1SpecProvider#azurekv + */ + readonly azurekv?: SecretStoreV1Beta1SpecProviderAzurekv; + + /** + * Chef configures this store to sync secrets with chef server + * + * @schema SecretStoreV1Beta1SpecProvider#chef + */ + readonly chef?: SecretStoreV1Beta1SpecProviderChef; + + /** + * Conjur configures this store to sync secrets using conjur provider + * + * @schema SecretStoreV1Beta1SpecProvider#conjur + */ + readonly conjur?: SecretStoreV1Beta1SpecProviderConjur; + + /** + * Delinea DevOps Secrets Vault + * https://docs.delinea.com/online-help/products/devops-secrets-vault/current + * + * @schema SecretStoreV1Beta1SpecProvider#delinea + */ + readonly delinea?: SecretStoreV1Beta1SpecProviderDelinea; + + /** + * Doppler configures this store to sync secrets using the Doppler provider + * + * @schema SecretStoreV1Beta1SpecProvider#doppler + */ + readonly doppler?: SecretStoreV1Beta1SpecProviderDoppler; + + /** + * Fake configures a store with static key/value pairs + * + * @schema SecretStoreV1Beta1SpecProvider#fake + */ + readonly fake?: SecretStoreV1Beta1SpecProviderFake; + + /** + * Fortanix configures this store to sync secrets using the Fortanix provider + * + * @schema SecretStoreV1Beta1SpecProvider#fortanix + */ + readonly fortanix?: SecretStoreV1Beta1SpecProviderFortanix; + + /** + * GCPSM configures this store to sync secrets using Google Cloud Platform Secret Manager provider + * + * @schema SecretStoreV1Beta1SpecProvider#gcpsm + */ + readonly gcpsm?: SecretStoreV1Beta1SpecProviderGcpsm; + + /** + * GitLab configures this store to sync secrets using GitLab Variables provider + * + * @schema SecretStoreV1Beta1SpecProvider#gitlab + */ + readonly gitlab?: SecretStoreV1Beta1SpecProviderGitlab; + + /** + * IBM configures this store to sync secrets using IBM Cloud provider + * + * @schema SecretStoreV1Beta1SpecProvider#ibm + */ + readonly ibm?: SecretStoreV1Beta1SpecProviderIbm; + + /** + * KeeperSecurity configures this store to sync secrets using the KeeperSecurity provider + * + * @schema SecretStoreV1Beta1SpecProvider#keepersecurity + */ + readonly keepersecurity?: SecretStoreV1Beta1SpecProviderKeepersecurity; + + /** + * Kubernetes configures this store to sync secrets using a Kubernetes cluster provider + * + * @schema SecretStoreV1Beta1SpecProvider#kubernetes + */ + readonly kubernetes?: SecretStoreV1Beta1SpecProviderKubernetes; + + /** + * Onboardbase configures this store to sync secrets using the Onboardbase provider + * + * @schema SecretStoreV1Beta1SpecProvider#onboardbase + */ + readonly onboardbase?: SecretStoreV1Beta1SpecProviderOnboardbase; + + /** + * OnePassword configures this store to sync secrets using the 1Password Cloud provider + * + * @schema SecretStoreV1Beta1SpecProvider#onepassword + */ + readonly onepassword?: SecretStoreV1Beta1SpecProviderOnepassword; + + /** + * Oracle configures this store to sync secrets using Oracle Vault provider + * + * @schema SecretStoreV1Beta1SpecProvider#oracle + */ + readonly oracle?: SecretStoreV1Beta1SpecProviderOracle; + + /** + * @schema SecretStoreV1Beta1SpecProvider#passbolt + */ + readonly passbolt?: SecretStoreV1Beta1SpecProviderPassbolt; + + /** + * Configures a store to sync secrets with a Password Depot instance. + * + * @schema SecretStoreV1Beta1SpecProvider#passworddepot + */ + readonly passworddepot?: SecretStoreV1Beta1SpecProviderPassworddepot; + + /** + * Pulumi configures this store to sync secrets using the Pulumi provider + * + * @schema SecretStoreV1Beta1SpecProvider#pulumi + */ + readonly pulumi?: SecretStoreV1Beta1SpecProviderPulumi; + + /** + * Scaleway + * + * @schema SecretStoreV1Beta1SpecProvider#scaleway + */ + readonly scaleway?: SecretStoreV1Beta1SpecProviderScaleway; + + /** + * Senhasegura configures this store to sync secrets using senhasegura provider + * + * @schema SecretStoreV1Beta1SpecProvider#senhasegura + */ + readonly senhasegura?: SecretStoreV1Beta1SpecProviderSenhasegura; + + /** + * Vault configures this store to sync secrets using Hashi provider + * + * @schema SecretStoreV1Beta1SpecProvider#vault + */ + readonly vault?: SecretStoreV1Beta1SpecProviderVault; + + /** + * Webhook configures this store to sync secrets using a generic templated webhook + * + * @schema SecretStoreV1Beta1SpecProvider#webhook + */ + readonly webhook?: SecretStoreV1Beta1SpecProviderWebhook; + + /** + * YandexCertificateManager configures this store to sync secrets using Yandex Certificate Manager provider + * + * @schema SecretStoreV1Beta1SpecProvider#yandexcertificatemanager + */ + readonly yandexcertificatemanager?: SecretStoreV1Beta1SpecProviderYandexcertificatemanager; + + /** + * YandexLockbox configures this store to sync secrets using Yandex Lockbox provider + * + * @schema SecretStoreV1Beta1SpecProvider#yandexlockbox + */ + readonly yandexlockbox?: SecretStoreV1Beta1SpecProviderYandexlockbox; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProvider(obj: SecretStoreV1Beta1SpecProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'akeyless': toJson_SecretStoreV1Beta1SpecProviderAkeyless(obj.akeyless), + 'alibaba': toJson_SecretStoreV1Beta1SpecProviderAlibaba(obj.alibaba), + 'aws': toJson_SecretStoreV1Beta1SpecProviderAws(obj.aws), + 'azurekv': toJson_SecretStoreV1Beta1SpecProviderAzurekv(obj.azurekv), + 'chef': toJson_SecretStoreV1Beta1SpecProviderChef(obj.chef), + 'conjur': toJson_SecretStoreV1Beta1SpecProviderConjur(obj.conjur), + 'delinea': toJson_SecretStoreV1Beta1SpecProviderDelinea(obj.delinea), + 'doppler': toJson_SecretStoreV1Beta1SpecProviderDoppler(obj.doppler), + 'fake': toJson_SecretStoreV1Beta1SpecProviderFake(obj.fake), + 'fortanix': toJson_SecretStoreV1Beta1SpecProviderFortanix(obj.fortanix), + 'gcpsm': toJson_SecretStoreV1Beta1SpecProviderGcpsm(obj.gcpsm), + 'gitlab': toJson_SecretStoreV1Beta1SpecProviderGitlab(obj.gitlab), + 'ibm': toJson_SecretStoreV1Beta1SpecProviderIbm(obj.ibm), + 'keepersecurity': toJson_SecretStoreV1Beta1SpecProviderKeepersecurity(obj.keepersecurity), + 'kubernetes': toJson_SecretStoreV1Beta1SpecProviderKubernetes(obj.kubernetes), + 'onboardbase': toJson_SecretStoreV1Beta1SpecProviderOnboardbase(obj.onboardbase), + 'onepassword': toJson_SecretStoreV1Beta1SpecProviderOnepassword(obj.onepassword), + 'oracle': toJson_SecretStoreV1Beta1SpecProviderOracle(obj.oracle), + 'passbolt': toJson_SecretStoreV1Beta1SpecProviderPassbolt(obj.passbolt), + 'passworddepot': toJson_SecretStoreV1Beta1SpecProviderPassworddepot(obj.passworddepot), + 'pulumi': toJson_SecretStoreV1Beta1SpecProviderPulumi(obj.pulumi), + 'scaleway': toJson_SecretStoreV1Beta1SpecProviderScaleway(obj.scaleway), + 'senhasegura': toJson_SecretStoreV1Beta1SpecProviderSenhasegura(obj.senhasegura), + 'vault': toJson_SecretStoreV1Beta1SpecProviderVault(obj.vault), + 'webhook': toJson_SecretStoreV1Beta1SpecProviderWebhook(obj.webhook), + 'yandexcertificatemanager': toJson_SecretStoreV1Beta1SpecProviderYandexcertificatemanager(obj.yandexcertificatemanager), + 'yandexlockbox': toJson_SecretStoreV1Beta1SpecProviderYandexlockbox(obj.yandexlockbox), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to configure http retries if failed + * + * @schema SecretStoreV1Beta1SpecRetrySettings + */ +export interface SecretStoreV1Beta1SpecRetrySettings { + /** + * @schema SecretStoreV1Beta1SpecRetrySettings#maxRetries + */ + readonly maxRetries?: number; + + /** + * @schema SecretStoreV1Beta1SpecRetrySettings#retryInterval + */ + readonly retryInterval?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecRetrySettings' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecRetrySettings(obj: SecretStoreV1Beta1SpecRetrySettings | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'maxRetries': obj.maxRetries, + 'retryInterval': obj.retryInterval, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Choose namespace using a labelSelector + * + * @schema SecretStoreV1Beta1SpecConditionsNamespaceSelector + */ +export interface SecretStoreV1Beta1SpecConditionsNamespaceSelector { + /** + * matchExpressions is a list of label selector requirements. The requirements are ANDed. + * + * @schema SecretStoreV1Beta1SpecConditionsNamespaceSelector#matchExpressions + */ + readonly matchExpressions?: SecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions[]; + + /** + * 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. + * + * @schema SecretStoreV1Beta1SpecConditionsNamespaceSelector#matchLabels + */ + readonly matchLabels?: { [key: string]: string }; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecConditionsNamespaceSelector' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecConditionsNamespaceSelector(obj: SecretStoreV1Beta1SpecConditionsNamespaceSelector | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'matchExpressions': obj.matchExpressions?.map(y => toJson_SecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions(y)), + 'matchLabels': ((obj.matchLabels) === undefined) ? undefined : (Object.entries(obj.matchLabels).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Akeyless configures this store to sync secrets using Akeyless Vault provider + * + * @schema SecretStoreV1Beta1SpecProviderAkeyless + */ +export interface SecretStoreV1Beta1SpecProviderAkeyless { + /** + * Akeyless GW API Url from which the secrets to be fetched from. + * + * @schema SecretStoreV1Beta1SpecProviderAkeyless#akeylessGWApiURL + */ + readonly akeylessGwApiUrl: string; + + /** + * Auth configures how the operator authenticates with Akeyless. + * + * @schema SecretStoreV1Beta1SpecProviderAkeyless#authSecretRef + */ + readonly authSecretRef: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef; + + /** + * PEM/base64 encoded CA bundle used to validate Akeyless Gateway certificate. Only used + * if the AkeylessGWApiURL URL is using HTTPS protocol. If not set the system root certificates + * are used to validate the TLS connection. + * + * @schema SecretStoreV1Beta1SpecProviderAkeyless#caBundle + */ + readonly caBundle?: string; + + /** + * The provider for the CA bundle to use to validate Akeyless Gateway certificate. + * + * @schema SecretStoreV1Beta1SpecProviderAkeyless#caProvider + */ + readonly caProvider?: SecretStoreV1Beta1SpecProviderAkeylessCaProvider; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAkeyless' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAkeyless(obj: SecretStoreV1Beta1SpecProviderAkeyless | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'akeylessGWApiURL': obj.akeylessGwApiUrl, + 'authSecretRef': toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef(obj.authSecretRef), + 'caBundle': obj.caBundle, + 'caProvider': toJson_SecretStoreV1Beta1SpecProviderAkeylessCaProvider(obj.caProvider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Alibaba configures this store to sync secrets using Alibaba Cloud provider + * + * @schema SecretStoreV1Beta1SpecProviderAlibaba + */ +export interface SecretStoreV1Beta1SpecProviderAlibaba { + /** + * AlibabaAuth contains a secretRef for credentials. + * + * @schema SecretStoreV1Beta1SpecProviderAlibaba#auth + */ + readonly auth: SecretStoreV1Beta1SpecProviderAlibabaAuth; + + /** + * Alibaba Region to be used for the provider + * + * @schema SecretStoreV1Beta1SpecProviderAlibaba#regionID + */ + readonly regionId: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAlibaba' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAlibaba(obj: SecretStoreV1Beta1SpecProviderAlibaba | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreV1Beta1SpecProviderAlibabaAuth(obj.auth), + 'regionID': obj.regionId, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AWS configures this store to sync secrets using AWS Secret Manager provider + * + * @schema SecretStoreV1Beta1SpecProviderAws + */ +export interface SecretStoreV1Beta1SpecProviderAws { + /** + * AdditionalRoles is a chained list of Role ARNs which the provider will sequentially assume before assuming the Role + * + * @schema SecretStoreV1Beta1SpecProviderAws#additionalRoles + */ + readonly additionalRoles?: string[]; + + /** + * Auth defines the information necessary to authenticate against AWS + * if not set aws sdk will infer credentials from your environment + * see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials + * + * @schema SecretStoreV1Beta1SpecProviderAws#auth + */ + readonly auth?: SecretStoreV1Beta1SpecProviderAwsAuth; + + /** + * AWS External ID set on assumed IAM roles + * + * @schema SecretStoreV1Beta1SpecProviderAws#externalID + */ + readonly externalId?: string; + + /** + * AWS Region to be used for the provider + * + * @schema SecretStoreV1Beta1SpecProviderAws#region + */ + readonly region: string; + + /** + * Role is a Role ARN which the provider will assume + * + * @schema SecretStoreV1Beta1SpecProviderAws#role + */ + readonly role?: string; + + /** + * SecretsManager defines how the provider behaves when interacting with AWS SecretsManager + * + * @schema SecretStoreV1Beta1SpecProviderAws#secretsManager + */ + readonly secretsManager?: SecretStoreV1Beta1SpecProviderAwsSecretsManager; + + /** + * Service defines which service should be used to fetch the secrets + * + * @schema SecretStoreV1Beta1SpecProviderAws#service + */ + readonly service: SecretStoreV1Beta1SpecProviderAwsService; + + /** + * AWS STS assume role session tags + * + * @schema SecretStoreV1Beta1SpecProviderAws#sessionTags + */ + readonly sessionTags?: SecretStoreV1Beta1SpecProviderAwsSessionTags[]; + + /** + * AWS STS assume role transitive session tags. Required when multiple rules are used with the provider + * + * @schema SecretStoreV1Beta1SpecProviderAws#transitiveTagKeys + */ + readonly transitiveTagKeys?: string[]; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAws' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAws(obj: SecretStoreV1Beta1SpecProviderAws | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'additionalRoles': obj.additionalRoles?.map(y => y), + 'auth': toJson_SecretStoreV1Beta1SpecProviderAwsAuth(obj.auth), + 'externalID': obj.externalId, + 'region': obj.region, + 'role': obj.role, + 'secretsManager': toJson_SecretStoreV1Beta1SpecProviderAwsSecretsManager(obj.secretsManager), + 'service': obj.service, + 'sessionTags': obj.sessionTags?.map(y => toJson_SecretStoreV1Beta1SpecProviderAwsSessionTags(y)), + 'transitiveTagKeys': obj.transitiveTagKeys?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AzureKV configures this store to sync secrets using Azure Key Vault provider + * + * @schema SecretStoreV1Beta1SpecProviderAzurekv + */ +export interface SecretStoreV1Beta1SpecProviderAzurekv { + /** + * Auth configures how the operator authenticates with Azure. Required for ServicePrincipal auth type. Optional for WorkloadIdentity. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekv#authSecretRef + */ + readonly authSecretRef?: SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef; + + /** + * Auth type defines how to authenticate to the keyvault service. + * Valid values are: + * - "ServicePrincipal" (default): Using a service principal (tenantId, clientId, clientSecret) + * - "ManagedIdentity": Using Managed Identity assigned to the pod (see aad-pod-identity) + * + * @schema SecretStoreV1Beta1SpecProviderAzurekv#authType + */ + readonly authType?: SecretStoreV1Beta1SpecProviderAzurekvAuthType; + + /** + * EnvironmentType specifies the Azure cloud environment endpoints to use for + * connecting and authenticating with Azure. By default it points to the public cloud AAD endpoint. + * The following endpoints are available, also see here: https://github.com/Azure/go-autorest/blob/main/autorest/azure/environments.go#L152 + * PublicCloud, USGovernmentCloud, ChinaCloud, GermanCloud + * + * @schema SecretStoreV1Beta1SpecProviderAzurekv#environmentType + */ + readonly environmentType?: SecretStoreV1Beta1SpecProviderAzurekvEnvironmentType; + + /** + * If multiple Managed Identity is assigned to the pod, you can select the one to be used + * + * @schema SecretStoreV1Beta1SpecProviderAzurekv#identityId + */ + readonly identityId?: string; + + /** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekv#serviceAccountRef + */ + readonly serviceAccountRef?: SecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef; + + /** + * TenantID configures the Azure Tenant to send requests to. Required for ServicePrincipal auth type. Optional for WorkloadIdentity. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekv#tenantId + */ + readonly tenantId?: string; + + /** + * Vault Url from which the secrets to be fetched from. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekv#vaultUrl + */ + readonly vaultUrl: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAzurekv' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAzurekv(obj: SecretStoreV1Beta1SpecProviderAzurekv | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'authSecretRef': toJson_SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef(obj.authSecretRef), + 'authType': obj.authType, + 'environmentType': obj.environmentType, + 'identityId': obj.identityId, + 'serviceAccountRef': toJson_SecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef(obj.serviceAccountRef), + 'tenantId': obj.tenantId, + 'vaultUrl': obj.vaultUrl, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Chef configures this store to sync secrets with chef server + * + * @schema SecretStoreV1Beta1SpecProviderChef + */ +export interface SecretStoreV1Beta1SpecProviderChef { + /** + * Auth defines the information necessary to authenticate against chef Server + * + * @schema SecretStoreV1Beta1SpecProviderChef#auth + */ + readonly auth: SecretStoreV1Beta1SpecProviderChefAuth; + + /** + * ServerURL is the chef server URL used to connect to. If using orgs you should include your org in the url and terminate the url with a "/" + * + * @schema SecretStoreV1Beta1SpecProviderChef#serverUrl + */ + readonly serverUrl: string; + + /** + * UserName should be the user ID on the chef server + * + * @schema SecretStoreV1Beta1SpecProviderChef#username + */ + readonly username: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderChef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderChef(obj: SecretStoreV1Beta1SpecProviderChef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreV1Beta1SpecProviderChefAuth(obj.auth), + 'serverUrl': obj.serverUrl, + 'username': obj.username, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Conjur configures this store to sync secrets using conjur provider + * + * @schema SecretStoreV1Beta1SpecProviderConjur + */ +export interface SecretStoreV1Beta1SpecProviderConjur { + /** + * @schema SecretStoreV1Beta1SpecProviderConjur#auth + */ + readonly auth: SecretStoreV1Beta1SpecProviderConjurAuth; + + /** + * @schema SecretStoreV1Beta1SpecProviderConjur#caBundle + */ + readonly caBundle?: string; + + /** + * Used to provide custom certificate authority (CA) certificates + * for a secret store. The CAProvider points to a Secret or ConfigMap resource + * that contains a PEM-encoded certificate. + * + * @schema SecretStoreV1Beta1SpecProviderConjur#caProvider + */ + readonly caProvider?: SecretStoreV1Beta1SpecProviderConjurCaProvider; + + /** + * @schema SecretStoreV1Beta1SpecProviderConjur#url + */ + readonly url: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderConjur' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderConjur(obj: SecretStoreV1Beta1SpecProviderConjur | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreV1Beta1SpecProviderConjurAuth(obj.auth), + 'caBundle': obj.caBundle, + 'caProvider': toJson_SecretStoreV1Beta1SpecProviderConjurCaProvider(obj.caProvider), + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Delinea DevOps Secrets Vault + * https://docs.delinea.com/online-help/products/devops-secrets-vault/current + * + * @schema SecretStoreV1Beta1SpecProviderDelinea + */ +export interface SecretStoreV1Beta1SpecProviderDelinea { + /** + * ClientID is the non-secret part of the credential. + * + * @schema SecretStoreV1Beta1SpecProviderDelinea#clientId + */ + readonly clientId: SecretStoreV1Beta1SpecProviderDelineaClientId; + + /** + * ClientSecret is the secret part of the credential. + * + * @schema SecretStoreV1Beta1SpecProviderDelinea#clientSecret + */ + readonly clientSecret: SecretStoreV1Beta1SpecProviderDelineaClientSecret; + + /** + * Tenant is the chosen hostname / site name. + * + * @schema SecretStoreV1Beta1SpecProviderDelinea#tenant + */ + readonly tenant: string; + + /** + * TLD is based on the server location that was chosen during provisioning. + * If unset, defaults to "com". + * + * @schema SecretStoreV1Beta1SpecProviderDelinea#tld + */ + readonly tld?: string; + + /** + * URLTemplate + * If unset, defaults to "https://%s.secretsvaultcloud.%s/v1/%s%s". + * + * @schema SecretStoreV1Beta1SpecProviderDelinea#urlTemplate + */ + readonly urlTemplate?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderDelinea' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderDelinea(obj: SecretStoreV1Beta1SpecProviderDelinea | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientId': toJson_SecretStoreV1Beta1SpecProviderDelineaClientId(obj.clientId), + 'clientSecret': toJson_SecretStoreV1Beta1SpecProviderDelineaClientSecret(obj.clientSecret), + 'tenant': obj.tenant, + 'tld': obj.tld, + 'urlTemplate': obj.urlTemplate, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Doppler configures this store to sync secrets using the Doppler provider + * + * @schema SecretStoreV1Beta1SpecProviderDoppler + */ +export interface SecretStoreV1Beta1SpecProviderDoppler { + /** + * Auth configures how the Operator authenticates with the Doppler API + * + * @schema SecretStoreV1Beta1SpecProviderDoppler#auth + */ + readonly auth: SecretStoreV1Beta1SpecProviderDopplerAuth; + + /** + * Doppler config (required if not using a Service Token) + * + * @schema SecretStoreV1Beta1SpecProviderDoppler#config + */ + readonly config?: string; + + /** + * Format enables the downloading of secrets as a file (string) + * + * @schema SecretStoreV1Beta1SpecProviderDoppler#format + */ + readonly format?: SecretStoreV1Beta1SpecProviderDopplerFormat; + + /** + * Environment variable compatible name transforms that change secret names to a different format + * + * @schema SecretStoreV1Beta1SpecProviderDoppler#nameTransformer + */ + readonly nameTransformer?: SecretStoreV1Beta1SpecProviderDopplerNameTransformer; + + /** + * Doppler project (required if not using a Service Token) + * + * @schema SecretStoreV1Beta1SpecProviderDoppler#project + */ + readonly project?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderDoppler' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderDoppler(obj: SecretStoreV1Beta1SpecProviderDoppler | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreV1Beta1SpecProviderDopplerAuth(obj.auth), + 'config': obj.config, + 'format': obj.format, + 'nameTransformer': obj.nameTransformer, + 'project': obj.project, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Fake configures a store with static key/value pairs + * + * @schema SecretStoreV1Beta1SpecProviderFake + */ +export interface SecretStoreV1Beta1SpecProviderFake { + /** + * @schema SecretStoreV1Beta1SpecProviderFake#data + */ + readonly data: SecretStoreV1Beta1SpecProviderFakeData[]; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderFake' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderFake(obj: SecretStoreV1Beta1SpecProviderFake | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'data': obj.data?.map(y => toJson_SecretStoreV1Beta1SpecProviderFakeData(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Fortanix configures this store to sync secrets using the Fortanix provider + * + * @schema SecretStoreV1Beta1SpecProviderFortanix + */ +export interface SecretStoreV1Beta1SpecProviderFortanix { + /** + * APIKey is the API token to access SDKMS Applications. + * + * @schema SecretStoreV1Beta1SpecProviderFortanix#apiKey + */ + readonly apiKey?: SecretStoreV1Beta1SpecProviderFortanixApiKey; + + /** + * APIURL is the URL of SDKMS API. Defaults to `sdkms.fortanix.com`. + * + * @default sdkms.fortanix.com`. + * @schema SecretStoreV1Beta1SpecProviderFortanix#apiUrl + */ + readonly apiUrl?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderFortanix' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderFortanix(obj: SecretStoreV1Beta1SpecProviderFortanix | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiKey': toJson_SecretStoreV1Beta1SpecProviderFortanixApiKey(obj.apiKey), + 'apiUrl': obj.apiUrl, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * GCPSM configures this store to sync secrets using Google Cloud Platform Secret Manager provider + * + * @schema SecretStoreV1Beta1SpecProviderGcpsm + */ +export interface SecretStoreV1Beta1SpecProviderGcpsm { + /** + * Auth defines the information necessary to authenticate against GCP + * + * @schema SecretStoreV1Beta1SpecProviderGcpsm#auth + */ + readonly auth?: SecretStoreV1Beta1SpecProviderGcpsmAuth; + + /** + * ProjectID project where secret is located + * + * @schema SecretStoreV1Beta1SpecProviderGcpsm#projectID + */ + readonly projectId?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderGcpsm' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderGcpsm(obj: SecretStoreV1Beta1SpecProviderGcpsm | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreV1Beta1SpecProviderGcpsmAuth(obj.auth), + 'projectID': obj.projectId, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * GitLab configures this store to sync secrets using GitLab Variables provider + * + * @schema SecretStoreV1Beta1SpecProviderGitlab + */ +export interface SecretStoreV1Beta1SpecProviderGitlab { + /** + * Auth configures how secret-manager authenticates with a GitLab instance. + * + * @schema SecretStoreV1Beta1SpecProviderGitlab#auth + */ + readonly auth: SecretStoreV1Beta1SpecProviderGitlabAuth; + + /** + * Environment environment_scope of gitlab CI/CD variables (Please see https://docs.gitlab.com/ee/ci/environments/#create-a-static-environment on how to create environments) + * + * @schema SecretStoreV1Beta1SpecProviderGitlab#environment + */ + readonly environment?: string; + + /** + * GroupIDs specify, which gitlab groups to pull secrets from. Group secrets are read from left to right followed by the project variables. + * + * @schema SecretStoreV1Beta1SpecProviderGitlab#groupIDs + */ + readonly groupIDs?: string[]; + + /** + * InheritFromGroups specifies whether parent groups should be discovered and checked for secrets. + * + * @schema SecretStoreV1Beta1SpecProviderGitlab#inheritFromGroups + */ + readonly inheritFromGroups?: boolean; + + /** + * ProjectID specifies a project where secrets are located. + * + * @schema SecretStoreV1Beta1SpecProviderGitlab#projectID + */ + readonly projectId?: string; + + /** + * URL configures the GitLab instance URL. Defaults to https://gitlab.com/. + * + * @default https://gitlab.com/. + * @schema SecretStoreV1Beta1SpecProviderGitlab#url + */ + readonly url?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderGitlab' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderGitlab(obj: SecretStoreV1Beta1SpecProviderGitlab | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreV1Beta1SpecProviderGitlabAuth(obj.auth), + 'environment': obj.environment, + 'groupIDs': obj.groupIDs?.map(y => y), + 'inheritFromGroups': obj.inheritFromGroups, + 'projectID': obj.projectId, + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * IBM configures this store to sync secrets using IBM Cloud provider + * + * @schema SecretStoreV1Beta1SpecProviderIbm + */ +export interface SecretStoreV1Beta1SpecProviderIbm { + /** + * Auth configures how secret-manager authenticates with the IBM secrets manager. + * + * @schema SecretStoreV1Beta1SpecProviderIbm#auth + */ + readonly auth: SecretStoreV1Beta1SpecProviderIbmAuth; + + /** + * ServiceURL is the Endpoint URL that is specific to the Secrets Manager service instance + * + * @schema SecretStoreV1Beta1SpecProviderIbm#serviceUrl + */ + readonly serviceUrl?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderIbm' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderIbm(obj: SecretStoreV1Beta1SpecProviderIbm | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreV1Beta1SpecProviderIbmAuth(obj.auth), + 'serviceUrl': obj.serviceUrl, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * KeeperSecurity configures this store to sync secrets using the KeeperSecurity provider + * + * @schema SecretStoreV1Beta1SpecProviderKeepersecurity + */ +export interface SecretStoreV1Beta1SpecProviderKeepersecurity { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderKeepersecurity#authRef + */ + readonly authRef: SecretStoreV1Beta1SpecProviderKeepersecurityAuthRef; + + /** + * @schema SecretStoreV1Beta1SpecProviderKeepersecurity#folderID + */ + readonly folderId: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderKeepersecurity' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderKeepersecurity(obj: SecretStoreV1Beta1SpecProviderKeepersecurity | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'authRef': toJson_SecretStoreV1Beta1SpecProviderKeepersecurityAuthRef(obj.authRef), + 'folderID': obj.folderId, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Kubernetes configures this store to sync secrets using a Kubernetes cluster provider + * + * @schema SecretStoreV1Beta1SpecProviderKubernetes + */ +export interface SecretStoreV1Beta1SpecProviderKubernetes { + /** + * Auth configures how secret-manager authenticates with a Kubernetes instance. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetes#auth + */ + readonly auth: SecretStoreV1Beta1SpecProviderKubernetesAuth; + + /** + * Remote namespace to fetch the secrets from + * + * @schema SecretStoreV1Beta1SpecProviderKubernetes#remoteNamespace + */ + readonly remoteNamespace?: string; + + /** + * configures the Kubernetes server Address. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetes#server + */ + readonly server?: SecretStoreV1Beta1SpecProviderKubernetesServer; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderKubernetes' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderKubernetes(obj: SecretStoreV1Beta1SpecProviderKubernetes | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreV1Beta1SpecProviderKubernetesAuth(obj.auth), + 'remoteNamespace': obj.remoteNamespace, + 'server': toJson_SecretStoreV1Beta1SpecProviderKubernetesServer(obj.server), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Onboardbase configures this store to sync secrets using the Onboardbase provider + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbase + */ +export interface SecretStoreV1Beta1SpecProviderOnboardbase { + /** + * APIHost use this to configure the host url for the API for selfhosted installation, default is https://public.onboardbase.com/api/v1/ + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbase#apiHost + */ + readonly apiHost: string; + + /** + * Auth configures how the Operator authenticates with the Onboardbase API + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbase#auth + */ + readonly auth: SecretStoreV1Beta1SpecProviderOnboardbaseAuth; + + /** + * Environment is the name of an environmnent within a project to pull the secrets from + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbase#environment + */ + readonly environment: string; + + /** + * Project is an onboardbase project that the secrets should be pulled from + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbase#project + */ + readonly project: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderOnboardbase' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderOnboardbase(obj: SecretStoreV1Beta1SpecProviderOnboardbase | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiHost': obj.apiHost, + 'auth': toJson_SecretStoreV1Beta1SpecProviderOnboardbaseAuth(obj.auth), + 'environment': obj.environment, + 'project': obj.project, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * OnePassword configures this store to sync secrets using the 1Password Cloud provider + * + * @schema SecretStoreV1Beta1SpecProviderOnepassword + */ +export interface SecretStoreV1Beta1SpecProviderOnepassword { + /** + * Auth defines the information necessary to authenticate against OnePassword Connect Server + * + * @schema SecretStoreV1Beta1SpecProviderOnepassword#auth + */ + readonly auth: SecretStoreV1Beta1SpecProviderOnepasswordAuth; + + /** + * ConnectHost defines the OnePassword Connect Server to connect to + * + * @schema SecretStoreV1Beta1SpecProviderOnepassword#connectHost + */ + readonly connectHost: string; + + /** + * Vaults defines which OnePassword vaults to search in which order + * + * @schema SecretStoreV1Beta1SpecProviderOnepassword#vaults + */ + readonly vaults: { [key: string]: number }; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderOnepassword' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderOnepassword(obj: SecretStoreV1Beta1SpecProviderOnepassword | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreV1Beta1SpecProviderOnepasswordAuth(obj.auth), + 'connectHost': obj.connectHost, + 'vaults': ((obj.vaults) === undefined) ? undefined : (Object.entries(obj.vaults).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Oracle configures this store to sync secrets using Oracle Vault provider + * + * @schema SecretStoreV1Beta1SpecProviderOracle + */ +export interface SecretStoreV1Beta1SpecProviderOracle { + /** + * Auth configures how secret-manager authenticates with the Oracle Vault. + * If empty, use the instance principal, otherwise the user credentials specified in Auth. + * + * @schema SecretStoreV1Beta1SpecProviderOracle#auth + */ + readonly auth?: SecretStoreV1Beta1SpecProviderOracleAuth; + + /** + * Compartment is the vault compartment OCID. + * Required for PushSecret + * + * @schema SecretStoreV1Beta1SpecProviderOracle#compartment + */ + readonly compartment?: string; + + /** + * EncryptionKey is the OCID of the encryption key within the vault. + * Required for PushSecret + * + * @schema SecretStoreV1Beta1SpecProviderOracle#encryptionKey + */ + readonly encryptionKey?: string; + + /** + * The type of principal to use for authentication. If left blank, the Auth struct will + * determine the principal type. This optional field must be specified if using + * workload identity. + * + * @schema SecretStoreV1Beta1SpecProviderOracle#principalType + */ + readonly principalType?: SecretStoreV1Beta1SpecProviderOraclePrincipalType; + + /** + * Region is the region where vault is located. + * + * @schema SecretStoreV1Beta1SpecProviderOracle#region + */ + readonly region: string; + + /** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema SecretStoreV1Beta1SpecProviderOracle#serviceAccountRef + */ + readonly serviceAccountRef?: SecretStoreV1Beta1SpecProviderOracleServiceAccountRef; + + /** + * Vault is the vault's OCID of the specific vault where secret is located. + * + * @schema SecretStoreV1Beta1SpecProviderOracle#vault + */ + readonly vault: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderOracle' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderOracle(obj: SecretStoreV1Beta1SpecProviderOracle | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreV1Beta1SpecProviderOracleAuth(obj.auth), + 'compartment': obj.compartment, + 'encryptionKey': obj.encryptionKey, + 'principalType': obj.principalType, + 'region': obj.region, + 'serviceAccountRef': toJson_SecretStoreV1Beta1SpecProviderOracleServiceAccountRef(obj.serviceAccountRef), + 'vault': obj.vault, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreV1Beta1SpecProviderPassbolt + */ +export interface SecretStoreV1Beta1SpecProviderPassbolt { + /** + * Auth defines the information necessary to authenticate against Passbolt Server + * + * @schema SecretStoreV1Beta1SpecProviderPassbolt#auth + */ + readonly auth: SecretStoreV1Beta1SpecProviderPassboltAuth; + + /** + * Host defines the Passbolt Server to connect to + * + * @schema SecretStoreV1Beta1SpecProviderPassbolt#host + */ + readonly host: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderPassbolt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderPassbolt(obj: SecretStoreV1Beta1SpecProviderPassbolt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreV1Beta1SpecProviderPassboltAuth(obj.auth), + 'host': obj.host, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Configures a store to sync secrets with a Password Depot instance. + * + * @schema SecretStoreV1Beta1SpecProviderPassworddepot + */ +export interface SecretStoreV1Beta1SpecProviderPassworddepot { + /** + * Auth configures how secret-manager authenticates with a Password Depot instance. + * + * @schema SecretStoreV1Beta1SpecProviderPassworddepot#auth + */ + readonly auth: SecretStoreV1Beta1SpecProviderPassworddepotAuth; + + /** + * Database to use as source + * + * @schema SecretStoreV1Beta1SpecProviderPassworddepot#database + */ + readonly database: string; + + /** + * URL configures the Password Depot instance URL. + * + * @schema SecretStoreV1Beta1SpecProviderPassworddepot#host + */ + readonly host: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderPassworddepot' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderPassworddepot(obj: SecretStoreV1Beta1SpecProviderPassworddepot | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreV1Beta1SpecProviderPassworddepotAuth(obj.auth), + 'database': obj.database, + 'host': obj.host, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Pulumi configures this store to sync secrets using the Pulumi provider + * + * @schema SecretStoreV1Beta1SpecProviderPulumi + */ +export interface SecretStoreV1Beta1SpecProviderPulumi { + /** + * AccessToken is the access tokens to sign in to the Pulumi Cloud Console. + * + * @schema SecretStoreV1Beta1SpecProviderPulumi#accessToken + */ + readonly accessToken: SecretStoreV1Beta1SpecProviderPulumiAccessToken; + + /** + * APIURL is the URL of the Pulumi API. + * + * @schema SecretStoreV1Beta1SpecProviderPulumi#apiUrl + */ + readonly apiUrl?: string; + + /** + * Environment are YAML documents composed of static key-value pairs, programmatic expressions, + * dynamically retrieved values from supported providers including all major clouds, + * and other Pulumi ESC environments. + * To create a new environment, visit https://www.pulumi.com/docs/esc/environments/ for more information. + * + * @schema SecretStoreV1Beta1SpecProviderPulumi#environment + */ + readonly environment: string; + + /** + * Organization are a space to collaborate on shared projects and stacks. + * To create a new organization, visit https://app.pulumi.com/ and click "New Organization". + * + * @schema SecretStoreV1Beta1SpecProviderPulumi#organization + */ + readonly organization: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderPulumi' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderPulumi(obj: SecretStoreV1Beta1SpecProviderPulumi | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessToken': toJson_SecretStoreV1Beta1SpecProviderPulumiAccessToken(obj.accessToken), + 'apiUrl': obj.apiUrl, + 'environment': obj.environment, + 'organization': obj.organization, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Scaleway + * + * @schema SecretStoreV1Beta1SpecProviderScaleway + */ +export interface SecretStoreV1Beta1SpecProviderScaleway { + /** + * AccessKey is the non-secret part of the api key. + * + * @schema SecretStoreV1Beta1SpecProviderScaleway#accessKey + */ + readonly accessKey: SecretStoreV1Beta1SpecProviderScalewayAccessKey; + + /** + * APIURL is the url of the api to use. Defaults to https://api.scaleway.com + * + * @default https://api.scaleway.com + * @schema SecretStoreV1Beta1SpecProviderScaleway#apiUrl + */ + readonly apiUrl?: string; + + /** + * ProjectID is the id of your project, which you can find in the console: https://console.scaleway.com/project/settings + * + * @schema SecretStoreV1Beta1SpecProviderScaleway#projectId + */ + readonly projectId: string; + + /** + * Region where your secrets are located: https://developers.scaleway.com/en/quickstart/#region-and-zone + * + * @schema SecretStoreV1Beta1SpecProviderScaleway#region + */ + readonly region: string; + + /** + * SecretKey is the non-secret part of the api key. + * + * @schema SecretStoreV1Beta1SpecProviderScaleway#secretKey + */ + readonly secretKey: SecretStoreV1Beta1SpecProviderScalewaySecretKey; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderScaleway' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderScaleway(obj: SecretStoreV1Beta1SpecProviderScaleway | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessKey': toJson_SecretStoreV1Beta1SpecProviderScalewayAccessKey(obj.accessKey), + 'apiUrl': obj.apiUrl, + 'projectId': obj.projectId, + 'region': obj.region, + 'secretKey': toJson_SecretStoreV1Beta1SpecProviderScalewaySecretKey(obj.secretKey), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Senhasegura configures this store to sync secrets using senhasegura provider + * + * @schema SecretStoreV1Beta1SpecProviderSenhasegura + */ +export interface SecretStoreV1Beta1SpecProviderSenhasegura { + /** + * Auth defines parameters to authenticate in senhasegura + * + * @schema SecretStoreV1Beta1SpecProviderSenhasegura#auth + */ + readonly auth: SecretStoreV1Beta1SpecProviderSenhaseguraAuth; + + /** + * IgnoreSslCertificate defines if SSL certificate must be ignored + * + * @schema SecretStoreV1Beta1SpecProviderSenhasegura#ignoreSslCertificate + */ + readonly ignoreSslCertificate?: boolean; + + /** + * Module defines which senhasegura module should be used to get secrets + * + * @schema SecretStoreV1Beta1SpecProviderSenhasegura#module + */ + readonly module: string; + + /** + * URL of senhasegura + * + * @schema SecretStoreV1Beta1SpecProviderSenhasegura#url + */ + readonly url: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderSenhasegura' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderSenhasegura(obj: SecretStoreV1Beta1SpecProviderSenhasegura | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreV1Beta1SpecProviderSenhaseguraAuth(obj.auth), + 'ignoreSslCertificate': obj.ignoreSslCertificate, + 'module': obj.module, + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Vault configures this store to sync secrets using Hashi provider + * + * @schema SecretStoreV1Beta1SpecProviderVault + */ +export interface SecretStoreV1Beta1SpecProviderVault { + /** + * Auth configures how secret-manager authenticates with the Vault server. + * + * @schema SecretStoreV1Beta1SpecProviderVault#auth + */ + readonly auth: SecretStoreV1Beta1SpecProviderVaultAuth; + + /** + * PEM encoded CA bundle used to validate Vault server certificate. Only used + * if the Server URL is using HTTPS protocol. This parameter is ignored for + * plain HTTP protocol connection. If not set the system root certificates + * are used to validate the TLS connection. + * + * @schema SecretStoreV1Beta1SpecProviderVault#caBundle + */ + readonly caBundle?: string; + + /** + * The provider for the CA bundle to use to validate Vault server certificate. + * + * @schema SecretStoreV1Beta1SpecProviderVault#caProvider + */ + readonly caProvider?: SecretStoreV1Beta1SpecProviderVaultCaProvider; + + /** + * ForwardInconsistent tells Vault to forward read-after-write requests to the Vault + * leader instead of simply retrying within a loop. This can increase performance if + * the option is enabled serverside. + * https://www.vaultproject.io/docs/configuration/replication#allow_forwarding_via_header + * + * @schema SecretStoreV1Beta1SpecProviderVault#forwardInconsistent + */ + readonly forwardInconsistent?: boolean; + + /** + * Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows + * Vault environments to support Secure Multi-tenancy. e.g: "ns1". + * More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces + * + * @schema SecretStoreV1Beta1SpecProviderVault#namespace + */ + readonly namespace?: string; + + /** + * Path is the mount path of the Vault KV backend endpoint, e.g: + * "secret". The v2 KV secret engine version specific "/data" path suffix + * for fetching secrets from Vault is optional and will be appended + * if not present in specified path. + * + * @schema SecretStoreV1Beta1SpecProviderVault#path + */ + readonly path?: string; + + /** + * ReadYourWrites ensures isolated read-after-write semantics by + * providing discovered cluster replication states in each request. + * More information about eventual consistency in Vault can be found here + * https://www.vaultproject.io/docs/enterprise/consistency + * + * @schema SecretStoreV1Beta1SpecProviderVault#readYourWrites + */ + readonly readYourWrites?: boolean; + + /** + * Server is the connection address for the Vault server, e.g: "https://vault.example.com:8200". + * + * @schema SecretStoreV1Beta1SpecProviderVault#server + */ + readonly server: string; + + /** + * The configuration used for client side related TLS communication, when the Vault server + * requires mutual authentication. Only used if the Server URL is using HTTPS protocol. + * This parameter is ignored for plain HTTP protocol connection. + * It's worth noting this configuration is different from the "TLS certificates auth method", + * which is available under the `auth.cert` section. + * + * @schema SecretStoreV1Beta1SpecProviderVault#tls + */ + readonly tls?: SecretStoreV1Beta1SpecProviderVaultTls; + + /** + * Version is the Vault KV secret engine version. This can be either "v1" or + * "v2". Version defaults to "v2". + * + * @schema SecretStoreV1Beta1SpecProviderVault#version + */ + readonly version?: SecretStoreV1Beta1SpecProviderVaultVersion; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVault' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVault(obj: SecretStoreV1Beta1SpecProviderVault | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_SecretStoreV1Beta1SpecProviderVaultAuth(obj.auth), + 'caBundle': obj.caBundle, + 'caProvider': toJson_SecretStoreV1Beta1SpecProviderVaultCaProvider(obj.caProvider), + 'forwardInconsistent': obj.forwardInconsistent, + 'namespace': obj.namespace, + 'path': obj.path, + 'readYourWrites': obj.readYourWrites, + 'server': obj.server, + 'tls': toJson_SecretStoreV1Beta1SpecProviderVaultTls(obj.tls), + 'version': obj.version, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Webhook configures this store to sync secrets using a generic templated webhook + * + * @schema SecretStoreV1Beta1SpecProviderWebhook + */ +export interface SecretStoreV1Beta1SpecProviderWebhook { + /** + * Body + * + * @schema SecretStoreV1Beta1SpecProviderWebhook#body + */ + readonly body?: string; + + /** + * PEM encoded CA bundle used to validate webhook server certificate. Only used + * if the Server URL is using HTTPS protocol. This parameter is ignored for + * plain HTTP protocol connection. If not set the system root certificates + * are used to validate the TLS connection. + * + * @schema SecretStoreV1Beta1SpecProviderWebhook#caBundle + */ + readonly caBundle?: string; + + /** + * The provider for the CA bundle to use to validate webhook server certificate. + * + * @schema SecretStoreV1Beta1SpecProviderWebhook#caProvider + */ + readonly caProvider?: SecretStoreV1Beta1SpecProviderWebhookCaProvider; + + /** + * Headers + * + * @schema SecretStoreV1Beta1SpecProviderWebhook#headers + */ + readonly headers?: { [key: string]: string }; + + /** + * Webhook Method + * + * @schema SecretStoreV1Beta1SpecProviderWebhook#method + */ + readonly method?: string; + + /** + * Result formatting + * + * @schema SecretStoreV1Beta1SpecProviderWebhook#result + */ + readonly result: SecretStoreV1Beta1SpecProviderWebhookResult; + + /** + * Secrets to fill in templates + * These secrets will be passed to the templating function as key value pairs under the given name + * + * @schema SecretStoreV1Beta1SpecProviderWebhook#secrets + */ + readonly secrets?: SecretStoreV1Beta1SpecProviderWebhookSecrets[]; + + /** + * Timeout + * + * @schema SecretStoreV1Beta1SpecProviderWebhook#timeout + */ + readonly timeout?: string; + + /** + * Webhook url to call + * + * @schema SecretStoreV1Beta1SpecProviderWebhook#url + */ + readonly url: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderWebhook' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderWebhook(obj: SecretStoreV1Beta1SpecProviderWebhook | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'body': obj.body, + 'caBundle': obj.caBundle, + 'caProvider': toJson_SecretStoreV1Beta1SpecProviderWebhookCaProvider(obj.caProvider), + 'headers': ((obj.headers) === undefined) ? undefined : (Object.entries(obj.headers).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'method': obj.method, + 'result': toJson_SecretStoreV1Beta1SpecProviderWebhookResult(obj.result), + 'secrets': obj.secrets?.map(y => toJson_SecretStoreV1Beta1SpecProviderWebhookSecrets(y)), + 'timeout': obj.timeout, + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * YandexCertificateManager configures this store to sync secrets using Yandex Certificate Manager provider + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanager + */ +export interface SecretStoreV1Beta1SpecProviderYandexcertificatemanager { + /** + * Yandex.Cloud API endpoint (e.g. 'api.cloud.yandex.net:443') + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanager#apiEndpoint + */ + readonly apiEndpoint?: string; + + /** + * Auth defines the information necessary to authenticate against Yandex Certificate Manager + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanager#auth + */ + readonly auth: SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth; + + /** + * The provider for the CA bundle to use to validate Yandex.Cloud server certificate. + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanager#caProvider + */ + readonly caProvider?: SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderYandexcertificatemanager' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderYandexcertificatemanager(obj: SecretStoreV1Beta1SpecProviderYandexcertificatemanager | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiEndpoint': obj.apiEndpoint, + 'auth': toJson_SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth(obj.auth), + 'caProvider': toJson_SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider(obj.caProvider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * YandexLockbox configures this store to sync secrets using Yandex Lockbox provider + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockbox + */ +export interface SecretStoreV1Beta1SpecProviderYandexlockbox { + /** + * Yandex.Cloud API endpoint (e.g. 'api.cloud.yandex.net:443') + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockbox#apiEndpoint + */ + readonly apiEndpoint?: string; + + /** + * Auth defines the information necessary to authenticate against Yandex Lockbox + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockbox#auth + */ + readonly auth: SecretStoreV1Beta1SpecProviderYandexlockboxAuth; + + /** + * The provider for the CA bundle to use to validate Yandex.Cloud server certificate. + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockbox#caProvider + */ + readonly caProvider?: SecretStoreV1Beta1SpecProviderYandexlockboxCaProvider; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderYandexlockbox' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderYandexlockbox(obj: SecretStoreV1Beta1SpecProviderYandexlockbox | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiEndpoint': obj.apiEndpoint, + 'auth': toJson_SecretStoreV1Beta1SpecProviderYandexlockboxAuth(obj.auth), + 'caProvider': toJson_SecretStoreV1Beta1SpecProviderYandexlockboxCaProvider(obj.caProvider), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A label selector requirement is a selector that contains values, a key, and an operator that + * relates the key and values. + * + * @schema SecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions + */ +export interface SecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions { + /** + * key is the label key that the selector applies to. + * + * @schema SecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions#key + */ + readonly key: string; + + /** + * operator represents a key's relationship to a set of values. + * Valid operators are In, NotIn, Exists and DoesNotExist. + * + * @schema SecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions#operator + */ + readonly operator: string; + + /** + * 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. + * + * @schema SecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions#values + */ + readonly values?: string[]; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions(obj: SecretStoreV1Beta1SpecConditionsNamespaceSelectorMatchExpressions | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'operator': obj.operator, + 'values': obj.values?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how the operator authenticates with Akeyless. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef { + /** + * Kubernetes authenticates with Akeyless by passing the ServiceAccount + * token stored in the named Secret resource. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef#kubernetesAuth + */ + readonly kubernetesAuth?: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth; + + /** + * Reference to a Secret that contains the details + * to authenticate with Akeyless. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef(obj: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kubernetesAuth': toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth(obj.kubernetesAuth), + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate Akeyless Gateway certificate. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessCaProvider + */ +export interface SecretStoreV1Beta1SpecProviderAkeylessCaProvider { + /** + * The key where the CA certificate can be found in the Secret or ConfigMap. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * Can only be defined when used in a ClusterSecretStore. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessCaProvider#type + */ + readonly type: SecretStoreV1Beta1SpecProviderAkeylessCaProviderType; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAkeylessCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAkeylessCaProvider(obj: SecretStoreV1Beta1SpecProviderAkeylessCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AlibabaAuth contains a secretRef for credentials. + * + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuth + */ +export interface SecretStoreV1Beta1SpecProviderAlibabaAuth { + /** + * Authenticate against Alibaba using RRSA. + * + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuth#rrsa + */ + readonly rrsa?: SecretStoreV1Beta1SpecProviderAlibabaAuthRrsa; + + /** + * AlibabaAuthSecretRef holds secret references for Alibaba credentials. + * + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuth#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAlibabaAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAlibabaAuth(obj: SecretStoreV1Beta1SpecProviderAlibabaAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'rrsa': toJson_SecretStoreV1Beta1SpecProviderAlibabaAuthRrsa(obj.rrsa), + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against AWS + * if not set aws sdk will infer credentials from your environment + * see: https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuth + */ +export interface SecretStoreV1Beta1SpecProviderAwsAuth { + /** + * Authenticate against AWS using service account tokens. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuth#jwt + */ + readonly jwt?: SecretStoreV1Beta1SpecProviderAwsAuthJwt; + + /** + * AWSAuthSecretRef holds secret references for AWS credentials + * both AccessKeyID and SecretAccessKey must be defined in order to properly authenticate. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuth#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderAwsAuthSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAwsAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAwsAuth(obj: SecretStoreV1Beta1SpecProviderAwsAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'jwt': toJson_SecretStoreV1Beta1SpecProviderAwsAuthJwt(obj.jwt), + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderAwsAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretsManager defines how the provider behaves when interacting with AWS SecretsManager + * + * @schema SecretStoreV1Beta1SpecProviderAwsSecretsManager + */ +export interface SecretStoreV1Beta1SpecProviderAwsSecretsManager { + /** + * Specifies whether to delete the secret without any recovery window. You + * can't use both this parameter and RecoveryWindowInDays in the same call. + * If you don't use either, then by default Secrets Manager uses a 30 day + * recovery window. + * see: https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DeleteSecret.html#SecretsManager-DeleteSecret-request-ForceDeleteWithoutRecovery + * + * @schema SecretStoreV1Beta1SpecProviderAwsSecretsManager#forceDeleteWithoutRecovery + */ + readonly forceDeleteWithoutRecovery?: boolean; + + /** + * The number of days from 7 to 30 that Secrets Manager waits before + * permanently deleting the secret. You can't use both this parameter and + * ForceDeleteWithoutRecovery in the same call. If you don't use either, + * then by default Secrets Manager uses a 30 day recovery window. + * see: https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DeleteSecret.html#SecretsManager-DeleteSecret-request-RecoveryWindowInDays + * + * @schema SecretStoreV1Beta1SpecProviderAwsSecretsManager#recoveryWindowInDays + */ + readonly recoveryWindowInDays?: number; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAwsSecretsManager' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAwsSecretsManager(obj: SecretStoreV1Beta1SpecProviderAwsSecretsManager | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'forceDeleteWithoutRecovery': obj.forceDeleteWithoutRecovery, + 'recoveryWindowInDays': obj.recoveryWindowInDays, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Service defines which service should be used to fetch the secrets + * + * @schema SecretStoreV1Beta1SpecProviderAwsService + */ +export enum SecretStoreV1Beta1SpecProviderAwsService { + /** SecretsManager */ + SECRETS_MANAGER = "SecretsManager", + /** ParameterStore */ + PARAMETER_STORE = "ParameterStore", +} + +/** + * @schema SecretStoreV1Beta1SpecProviderAwsSessionTags + */ +export interface SecretStoreV1Beta1SpecProviderAwsSessionTags { + /** + * @schema SecretStoreV1Beta1SpecProviderAwsSessionTags#key + */ + readonly key: string; + + /** + * @schema SecretStoreV1Beta1SpecProviderAwsSessionTags#value + */ + readonly value: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAwsSessionTags' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAwsSessionTags(obj: SecretStoreV1Beta1SpecProviderAwsSessionTags | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'value': obj.value, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how the operator authenticates with Azure. Required for ServicePrincipal auth type. Optional for WorkloadIdentity. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef { + /** + * The Azure clientId of the service principle or managed identity used for authentication. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef#clientId + */ + readonly clientId?: SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId; + + /** + * The Azure ClientSecret of the service principle used for authentication. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef#clientSecret + */ + readonly clientSecret?: SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret; + + /** + * The Azure tenantId of the managed identity used for authentication. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef#tenantId + */ + readonly tenantId?: SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef(obj: SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientId': toJson_SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId(obj.clientId), + 'clientSecret': toJson_SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret(obj.clientSecret), + 'tenantId': toJson_SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId(obj.tenantId), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth type defines how to authenticate to the keyvault service. + * Valid values are: + * - "ServicePrincipal" (default): Using a service principal (tenantId, clientId, clientSecret) + * - "ManagedIdentity": Using Managed Identity assigned to the pod (see aad-pod-identity) + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthType + */ +export enum SecretStoreV1Beta1SpecProviderAzurekvAuthType { + /** ServicePrincipal */ + SERVICE_PRINCIPAL = "ServicePrincipal", + /** ManagedIdentity */ + MANAGED_IDENTITY = "ManagedIdentity", + /** WorkloadIdentity */ + WORKLOAD_IDENTITY = "WorkloadIdentity", +} + +/** + * EnvironmentType specifies the Azure cloud environment endpoints to use for + * connecting and authenticating with Azure. By default it points to the public cloud AAD endpoint. + * The following endpoints are available, also see here: https://github.com/Azure/go-autorest/blob/main/autorest/azure/environments.go#L152 + * PublicCloud, USGovernmentCloud, ChinaCloud, GermanCloud + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvEnvironmentType + */ +export enum SecretStoreV1Beta1SpecProviderAzurekvEnvironmentType { + /** PublicCloud */ + PUBLIC_CLOUD = "PublicCloud", + /** USGovernmentCloud */ + US_GOVERNMENT_CLOUD = "USGovernmentCloud", + /** ChinaCloud */ + CHINA_CLOUD = "ChinaCloud", + /** GermanCloud */ + GERMAN_CLOUD = "GermanCloud", +} + +/** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef + */ +export interface SecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef(obj: SecretStoreV1Beta1SpecProviderAzurekvServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against chef Server + * + * @schema SecretStoreV1Beta1SpecProviderChefAuth + */ +export interface SecretStoreV1Beta1SpecProviderChefAuth { + /** + * ChefAuthSecretRef holds secret references for chef server login credentials. + * + * @schema SecretStoreV1Beta1SpecProviderChefAuth#secretRef + */ + readonly secretRef: SecretStoreV1Beta1SpecProviderChefAuthSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderChefAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderChefAuth(obj: SecretStoreV1Beta1SpecProviderChefAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderChefAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreV1Beta1SpecProviderConjurAuth + */ +export interface SecretStoreV1Beta1SpecProviderConjurAuth { + /** + * @schema SecretStoreV1Beta1SpecProviderConjurAuth#apikey + */ + readonly apikey?: SecretStoreV1Beta1SpecProviderConjurAuthApikey; + + /** + * @schema SecretStoreV1Beta1SpecProviderConjurAuth#jwt + */ + readonly jwt?: SecretStoreV1Beta1SpecProviderConjurAuthJwt; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderConjurAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderConjurAuth(obj: SecretStoreV1Beta1SpecProviderConjurAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apikey': toJson_SecretStoreV1Beta1SpecProviderConjurAuthApikey(obj.apikey), + 'jwt': toJson_SecretStoreV1Beta1SpecProviderConjurAuthJwt(obj.jwt), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Used to provide custom certificate authority (CA) certificates + * for a secret store. The CAProvider points to a Secret or ConfigMap resource + * that contains a PEM-encoded certificate. + * + * @schema SecretStoreV1Beta1SpecProviderConjurCaProvider + */ +export interface SecretStoreV1Beta1SpecProviderConjurCaProvider { + /** + * The key where the CA certificate can be found in the Secret or ConfigMap. + * + * @schema SecretStoreV1Beta1SpecProviderConjurCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema SecretStoreV1Beta1SpecProviderConjurCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * Can only be defined when used in a ClusterSecretStore. + * + * @schema SecretStoreV1Beta1SpecProviderConjurCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreV1Beta1SpecProviderConjurCaProvider#type + */ + readonly type: SecretStoreV1Beta1SpecProviderConjurCaProviderType; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderConjurCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderConjurCaProvider(obj: SecretStoreV1Beta1SpecProviderConjurCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ClientID is the non-secret part of the credential. + * + * @schema SecretStoreV1Beta1SpecProviderDelineaClientId + */ +export interface SecretStoreV1Beta1SpecProviderDelineaClientId { + /** + * SecretRef references a key in a secret that will be used as value. + * + * @schema SecretStoreV1Beta1SpecProviderDelineaClientId#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef; + + /** + * Value can be specified directly to set a value without using a secret. + * + * @schema SecretStoreV1Beta1SpecProviderDelineaClientId#value + */ + readonly value?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderDelineaClientId' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderDelineaClientId(obj: SecretStoreV1Beta1SpecProviderDelineaClientId | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef(obj.secretRef), + 'value': obj.value, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ClientSecret is the secret part of the credential. + * + * @schema SecretStoreV1Beta1SpecProviderDelineaClientSecret + */ +export interface SecretStoreV1Beta1SpecProviderDelineaClientSecret { + /** + * SecretRef references a key in a secret that will be used as value. + * + * @schema SecretStoreV1Beta1SpecProviderDelineaClientSecret#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef; + + /** + * Value can be specified directly to set a value without using a secret. + * + * @schema SecretStoreV1Beta1SpecProviderDelineaClientSecret#value + */ + readonly value?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderDelineaClientSecret' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderDelineaClientSecret(obj: SecretStoreV1Beta1SpecProviderDelineaClientSecret | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef(obj.secretRef), + 'value': obj.value, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how the Operator authenticates with the Doppler API + * + * @schema SecretStoreV1Beta1SpecProviderDopplerAuth + */ +export interface SecretStoreV1Beta1SpecProviderDopplerAuth { + /** + * @schema SecretStoreV1Beta1SpecProviderDopplerAuth#secretRef + */ + readonly secretRef: SecretStoreV1Beta1SpecProviderDopplerAuthSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderDopplerAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderDopplerAuth(obj: SecretStoreV1Beta1SpecProviderDopplerAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderDopplerAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Format enables the downloading of secrets as a file (string) + * + * @schema SecretStoreV1Beta1SpecProviderDopplerFormat + */ +export enum SecretStoreV1Beta1SpecProviderDopplerFormat { + /** json */ + JSON = "json", + /** dotnet-json */ + DOTNET_HYPHEN_JSON = "dotnet-json", + /** env */ + ENV = "env", + /** yaml */ + YAML = "yaml", + /** docker */ + DOCKER = "docker", +} + +/** + * Environment variable compatible name transforms that change secret names to a different format + * + * @schema SecretStoreV1Beta1SpecProviderDopplerNameTransformer + */ +export enum SecretStoreV1Beta1SpecProviderDopplerNameTransformer { + /** upper-camel */ + UPPER_HYPHEN_CAMEL = "upper-camel", + /** camel */ + CAMEL = "camel", + /** lower-snake */ + LOWER_HYPHEN_SNAKE = "lower-snake", + /** tf-var */ + TF_HYPHEN_VAR = "tf-var", + /** dotnet-env */ + DOTNET_HYPHEN_ENV = "dotnet-env", + /** lower-kebab */ + LOWER_HYPHEN_KEBAB = "lower-kebab", +} + +/** + * @schema SecretStoreV1Beta1SpecProviderFakeData + */ +export interface SecretStoreV1Beta1SpecProviderFakeData { + /** + * @schema SecretStoreV1Beta1SpecProviderFakeData#key + */ + readonly key: string; + + /** + * @schema SecretStoreV1Beta1SpecProviderFakeData#value + */ + readonly value?: string; + + /** + * Deprecated: ValueMap is deprecated and is intended to be removed in the future, use the `value` field instead. + * + * @schema SecretStoreV1Beta1SpecProviderFakeData#valueMap + */ + readonly valueMap?: { [key: string]: string }; + + /** + * @schema SecretStoreV1Beta1SpecProviderFakeData#version + */ + readonly version?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderFakeData' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderFakeData(obj: SecretStoreV1Beta1SpecProviderFakeData | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'value': obj.value, + 'valueMap': ((obj.valueMap) === undefined) ? undefined : (Object.entries(obj.valueMap).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'version': obj.version, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * APIKey is the API token to access SDKMS Applications. + * + * @schema SecretStoreV1Beta1SpecProviderFortanixApiKey + */ +export interface SecretStoreV1Beta1SpecProviderFortanixApiKey { + /** + * SecretRef is a reference to a secret containing the SDKMS API Key. + * + * @schema SecretStoreV1Beta1SpecProviderFortanixApiKey#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderFortanixApiKey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderFortanixApiKey(obj: SecretStoreV1Beta1SpecProviderFortanixApiKey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against GCP + * + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuth + */ +export interface SecretStoreV1Beta1SpecProviderGcpsmAuth { + /** + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuth#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef; + + /** + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuth#workloadIdentity + */ + readonly workloadIdentity?: SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderGcpsmAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderGcpsmAuth(obj: SecretStoreV1Beta1SpecProviderGcpsmAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef(obj.secretRef), + 'workloadIdentity': toJson_SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity(obj.workloadIdentity), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with a GitLab instance. + * + * @schema SecretStoreV1Beta1SpecProviderGitlabAuth + */ +export interface SecretStoreV1Beta1SpecProviderGitlabAuth { + /** + * @schema SecretStoreV1Beta1SpecProviderGitlabAuth#SecretRef + */ + readonly secretRef: SecretStoreV1Beta1SpecProviderGitlabAuthSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderGitlabAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderGitlabAuth(obj: SecretStoreV1Beta1SpecProviderGitlabAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'SecretRef': toJson_SecretStoreV1Beta1SpecProviderGitlabAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with the IBM secrets manager. + * + * @schema SecretStoreV1Beta1SpecProviderIbmAuth + */ +export interface SecretStoreV1Beta1SpecProviderIbmAuth { + /** + * IBM Container-based auth with IAM Trusted Profile. + * + * @schema SecretStoreV1Beta1SpecProviderIbmAuth#containerAuth + */ + readonly containerAuth?: SecretStoreV1Beta1SpecProviderIbmAuthContainerAuth; + + /** + * @schema SecretStoreV1Beta1SpecProviderIbmAuth#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderIbmAuthSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderIbmAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderIbmAuth(obj: SecretStoreV1Beta1SpecProviderIbmAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'containerAuth': toJson_SecretStoreV1Beta1SpecProviderIbmAuthContainerAuth(obj.containerAuth), + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderIbmAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderKeepersecurityAuthRef + */ +export interface SecretStoreV1Beta1SpecProviderKeepersecurityAuthRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderKeepersecurityAuthRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderKeepersecurityAuthRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderKeepersecurityAuthRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderKeepersecurityAuthRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderKeepersecurityAuthRef(obj: SecretStoreV1Beta1SpecProviderKeepersecurityAuthRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with a Kubernetes instance. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuth + */ +export interface SecretStoreV1Beta1SpecProviderKubernetesAuth { + /** + * has both clientCert and clientKey as secretKeySelector + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuth#cert + */ + readonly cert?: SecretStoreV1Beta1SpecProviderKubernetesAuthCert; + + /** + * points to a service account that should be used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuth#serviceAccount + */ + readonly serviceAccount?: SecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount; + + /** + * use static token to authenticate with + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuth#token + */ + readonly token?: SecretStoreV1Beta1SpecProviderKubernetesAuthToken; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderKubernetesAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderKubernetesAuth(obj: SecretStoreV1Beta1SpecProviderKubernetesAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'cert': toJson_SecretStoreV1Beta1SpecProviderKubernetesAuthCert(obj.cert), + 'serviceAccount': toJson_SecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount(obj.serviceAccount), + 'token': toJson_SecretStoreV1Beta1SpecProviderKubernetesAuthToken(obj.token), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * configures the Kubernetes server Address. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesServer + */ +export interface SecretStoreV1Beta1SpecProviderKubernetesServer { + /** + * CABundle is a base64-encoded CA certificate + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesServer#caBundle + */ + readonly caBundle?: string; + + /** + * see: https://external-secrets.io/v0.4.1/spec/#external-secrets.io/v1alpha1.CAProvider + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesServer#caProvider + */ + readonly caProvider?: SecretStoreV1Beta1SpecProviderKubernetesServerCaProvider; + + /** + * configures the Kubernetes server Address. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesServer#url + */ + readonly url?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderKubernetesServer' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderKubernetesServer(obj: SecretStoreV1Beta1SpecProviderKubernetesServer | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'caBundle': obj.caBundle, + 'caProvider': toJson_SecretStoreV1Beta1SpecProviderKubernetesServerCaProvider(obj.caProvider), + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how the Operator authenticates with the Onboardbase API + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbaseAuth + */ +export interface SecretStoreV1Beta1SpecProviderOnboardbaseAuth { + /** + * OnboardbaseAPIKey is the APIKey generated by an admin account. + * It is used to recognize and authorize access to a project and environment within onboardbase + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbaseAuth#apiKeyRef + */ + readonly apiKeyRef: SecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef; + + /** + * OnboardbasePasscode is the passcode attached to the API Key + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbaseAuth#passcodeRef + */ + readonly passcodeRef: SecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderOnboardbaseAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderOnboardbaseAuth(obj: SecretStoreV1Beta1SpecProviderOnboardbaseAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiKeyRef': toJson_SecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef(obj.apiKeyRef), + 'passcodeRef': toJson_SecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef(obj.passcodeRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against OnePassword Connect Server + * + * @schema SecretStoreV1Beta1SpecProviderOnepasswordAuth + */ +export interface SecretStoreV1Beta1SpecProviderOnepasswordAuth { + /** + * OnePasswordAuthSecretRef holds secret references for 1Password credentials. + * + * @schema SecretStoreV1Beta1SpecProviderOnepasswordAuth#secretRef + */ + readonly secretRef: SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderOnepasswordAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderOnepasswordAuth(obj: SecretStoreV1Beta1SpecProviderOnepasswordAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with the Oracle Vault. + * If empty, use the instance principal, otherwise the user credentials specified in Auth. + * + * @schema SecretStoreV1Beta1SpecProviderOracleAuth + */ +export interface SecretStoreV1Beta1SpecProviderOracleAuth { + /** + * SecretRef to pass through sensitive information. + * + * @schema SecretStoreV1Beta1SpecProviderOracleAuth#secretRef + */ + readonly secretRef: SecretStoreV1Beta1SpecProviderOracleAuthSecretRef; + + /** + * Tenancy is the tenancy OCID where user is located. + * + * @schema SecretStoreV1Beta1SpecProviderOracleAuth#tenancy + */ + readonly tenancy: string; + + /** + * User is an access OCID specific to the account. + * + * @schema SecretStoreV1Beta1SpecProviderOracleAuth#user + */ + readonly user: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderOracleAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderOracleAuth(obj: SecretStoreV1Beta1SpecProviderOracleAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderOracleAuthSecretRef(obj.secretRef), + 'tenancy': obj.tenancy, + 'user': obj.user, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of principal to use for authentication. If left blank, the Auth struct will + * determine the principal type. This optional field must be specified if using + * workload identity. + * + * @schema SecretStoreV1Beta1SpecProviderOraclePrincipalType + */ +export enum SecretStoreV1Beta1SpecProviderOraclePrincipalType { + /** UserPrincipal */ + USER_PRINCIPAL = "UserPrincipal", + /** InstancePrincipal */ + INSTANCE_PRINCIPAL = "InstancePrincipal", + /** Workload */ + WORKLOAD = "Workload", +} + +/** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema SecretStoreV1Beta1SpecProviderOracleServiceAccountRef + */ +export interface SecretStoreV1Beta1SpecProviderOracleServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreV1Beta1SpecProviderOracleServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderOracleServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderOracleServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderOracleServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderOracleServiceAccountRef(obj: SecretStoreV1Beta1SpecProviderOracleServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against Passbolt Server + * + * @schema SecretStoreV1Beta1SpecProviderPassboltAuth + */ +export interface SecretStoreV1Beta1SpecProviderPassboltAuth { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderPassboltAuth#passwordSecretRef + */ + readonly passwordSecretRef: SecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderPassboltAuth#privateKeySecretRef + */ + readonly privateKeySecretRef: SecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderPassboltAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderPassboltAuth(obj: SecretStoreV1Beta1SpecProviderPassboltAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'passwordSecretRef': toJson_SecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef(obj.passwordSecretRef), + 'privateKeySecretRef': toJson_SecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef(obj.privateKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with a Password Depot instance. + * + * @schema SecretStoreV1Beta1SpecProviderPassworddepotAuth + */ +export interface SecretStoreV1Beta1SpecProviderPassworddepotAuth { + /** + * @schema SecretStoreV1Beta1SpecProviderPassworddepotAuth#secretRef + */ + readonly secretRef: SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderPassworddepotAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderPassworddepotAuth(obj: SecretStoreV1Beta1SpecProviderPassworddepotAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AccessToken is the access tokens to sign in to the Pulumi Cloud Console. + * + * @schema SecretStoreV1Beta1SpecProviderPulumiAccessToken + */ +export interface SecretStoreV1Beta1SpecProviderPulumiAccessToken { + /** + * SecretRef is a reference to a secret containing the Pulumi API token. + * + * @schema SecretStoreV1Beta1SpecProviderPulumiAccessToken#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderPulumiAccessToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderPulumiAccessToken(obj: SecretStoreV1Beta1SpecProviderPulumiAccessToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AccessKey is the non-secret part of the api key. + * + * @schema SecretStoreV1Beta1SpecProviderScalewayAccessKey + */ +export interface SecretStoreV1Beta1SpecProviderScalewayAccessKey { + /** + * SecretRef references a key in a secret that will be used as value. + * + * @schema SecretStoreV1Beta1SpecProviderScalewayAccessKey#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef; + + /** + * Value can be specified directly to set a value without using a secret. + * + * @schema SecretStoreV1Beta1SpecProviderScalewayAccessKey#value + */ + readonly value?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderScalewayAccessKey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderScalewayAccessKey(obj: SecretStoreV1Beta1SpecProviderScalewayAccessKey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef(obj.secretRef), + 'value': obj.value, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretKey is the non-secret part of the api key. + * + * @schema SecretStoreV1Beta1SpecProviderScalewaySecretKey + */ +export interface SecretStoreV1Beta1SpecProviderScalewaySecretKey { + /** + * SecretRef references a key in a secret that will be used as value. + * + * @schema SecretStoreV1Beta1SpecProviderScalewaySecretKey#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef; + + /** + * Value can be specified directly to set a value without using a secret. + * + * @schema SecretStoreV1Beta1SpecProviderScalewaySecretKey#value + */ + readonly value?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderScalewaySecretKey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderScalewaySecretKey(obj: SecretStoreV1Beta1SpecProviderScalewaySecretKey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef(obj.secretRef), + 'value': obj.value, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines parameters to authenticate in senhasegura + * + * @schema SecretStoreV1Beta1SpecProviderSenhaseguraAuth + */ +export interface SecretStoreV1Beta1SpecProviderSenhaseguraAuth { + /** + * @schema SecretStoreV1Beta1SpecProviderSenhaseguraAuth#clientId + */ + readonly clientId: string; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderSenhaseguraAuth#clientSecretSecretRef + */ + readonly clientSecretSecretRef: SecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderSenhaseguraAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderSenhaseguraAuth(obj: SecretStoreV1Beta1SpecProviderSenhaseguraAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientId': obj.clientId, + 'clientSecretSecretRef': toJson_SecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef(obj.clientSecretSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how secret-manager authenticates with the Vault server. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuth + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuth { + /** + * AppRole authenticates with Vault using the App Role auth mechanism, + * with the role and secret stored in a Kubernetes Secret resource. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuth#appRole + */ + readonly appRole?: SecretStoreV1Beta1SpecProviderVaultAuthAppRole; + + /** + * Cert authenticates with TLS Certificates by passing client certificate, private key and ca certificate + * Cert authentication method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuth#cert + */ + readonly cert?: SecretStoreV1Beta1SpecProviderVaultAuthCert; + + /** + * Iam authenticates with vault by passing a special AWS request signed with AWS IAM credentials + * AWS IAM authentication method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuth#iam + */ + readonly iam?: SecretStoreV1Beta1SpecProviderVaultAuthIam; + + /** + * Jwt authenticates with Vault by passing role and JWT token using the + * JWT/OIDC authentication method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuth#jwt + */ + readonly jwt?: SecretStoreV1Beta1SpecProviderVaultAuthJwt; + + /** + * Kubernetes authenticates with Vault by passing the ServiceAccount + * token stored in the named Secret resource to the Vault server. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuth#kubernetes + */ + readonly kubernetes?: SecretStoreV1Beta1SpecProviderVaultAuthKubernetes; + + /** + * Ldap authenticates with Vault by passing username/password pair using + * the LDAP authentication method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuth#ldap + */ + readonly ldap?: SecretStoreV1Beta1SpecProviderVaultAuthLdap; + + /** + * Name of the vault namespace to authenticate to. This can be different than the namespace your secret is in. + * Namespaces is a set of features within Vault Enterprise that allows + * Vault environments to support Secure Multi-tenancy. e.g: "ns1". + * More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces + * This will default to Vault.Namespace field if set, or empty otherwise + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuth#namespace + */ + readonly namespace?: string; + + /** + * TokenSecretRef authenticates with Vault by presenting a token. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuth#tokenSecretRef + */ + readonly tokenSecretRef?: SecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef; + + /** + * UserPass authenticates with Vault by passing username/password pair + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuth#userPass + */ + readonly userPass?: SecretStoreV1Beta1SpecProviderVaultAuthUserPass; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuth(obj: SecretStoreV1Beta1SpecProviderVaultAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'appRole': toJson_SecretStoreV1Beta1SpecProviderVaultAuthAppRole(obj.appRole), + 'cert': toJson_SecretStoreV1Beta1SpecProviderVaultAuthCert(obj.cert), + 'iam': toJson_SecretStoreV1Beta1SpecProviderVaultAuthIam(obj.iam), + 'jwt': toJson_SecretStoreV1Beta1SpecProviderVaultAuthJwt(obj.jwt), + 'kubernetes': toJson_SecretStoreV1Beta1SpecProviderVaultAuthKubernetes(obj.kubernetes), + 'ldap': toJson_SecretStoreV1Beta1SpecProviderVaultAuthLdap(obj.ldap), + 'namespace': obj.namespace, + 'tokenSecretRef': toJson_SecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef(obj.tokenSecretRef), + 'userPass': toJson_SecretStoreV1Beta1SpecProviderVaultAuthUserPass(obj.userPass), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate Vault server certificate. + * + * @schema SecretStoreV1Beta1SpecProviderVaultCaProvider + */ +export interface SecretStoreV1Beta1SpecProviderVaultCaProvider { + /** + * The key where the CA certificate can be found in the Secret or ConfigMap. + * + * @schema SecretStoreV1Beta1SpecProviderVaultCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema SecretStoreV1Beta1SpecProviderVaultCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * Can only be defined when used in a ClusterSecretStore. + * + * @schema SecretStoreV1Beta1SpecProviderVaultCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreV1Beta1SpecProviderVaultCaProvider#type + */ + readonly type: SecretStoreV1Beta1SpecProviderVaultCaProviderType; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultCaProvider(obj: SecretStoreV1Beta1SpecProviderVaultCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The configuration used for client side related TLS communication, when the Vault server + * requires mutual authentication. Only used if the Server URL is using HTTPS protocol. + * This parameter is ignored for plain HTTP protocol connection. + * It's worth noting this configuration is different from the "TLS certificates auth method", + * which is available under the `auth.cert` section. + * + * @schema SecretStoreV1Beta1SpecProviderVaultTls + */ +export interface SecretStoreV1Beta1SpecProviderVaultTls { + /** + * CertSecretRef is a certificate added to the transport layer + * when communicating with the Vault server. + * If no key for the Secret is specified, external-secret will default to 'tls.crt'. + * + * @schema SecretStoreV1Beta1SpecProviderVaultTls#certSecretRef + */ + readonly certSecretRef?: SecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef; + + /** + * KeySecretRef to a key in a Secret resource containing client private key + * added to the transport layer when communicating with the Vault server. + * If no key for the Secret is specified, external-secret will default to 'tls.key'. + * + * @schema SecretStoreV1Beta1SpecProviderVaultTls#keySecretRef + */ + readonly keySecretRef?: SecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultTls' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultTls(obj: SecretStoreV1Beta1SpecProviderVaultTls | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'certSecretRef': toJson_SecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef(obj.certSecretRef), + 'keySecretRef': toJson_SecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef(obj.keySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Version is the Vault KV secret engine version. This can be either "v1" or + * "v2". Version defaults to "v2". + * + * @schema SecretStoreV1Beta1SpecProviderVaultVersion + */ +export enum SecretStoreV1Beta1SpecProviderVaultVersion { + /** v1 */ + V1 = "v1", + /** v2 */ + V2 = "v2", +} + +/** + * The provider for the CA bundle to use to validate webhook server certificate. + * + * @schema SecretStoreV1Beta1SpecProviderWebhookCaProvider + */ +export interface SecretStoreV1Beta1SpecProviderWebhookCaProvider { + /** + * The key the value inside of the provider type to use, only used with "Secret" type + * + * @schema SecretStoreV1Beta1SpecProviderWebhookCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema SecretStoreV1Beta1SpecProviderWebhookCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * + * @schema SecretStoreV1Beta1SpecProviderWebhookCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreV1Beta1SpecProviderWebhookCaProvider#type + */ + readonly type: SecretStoreV1Beta1SpecProviderWebhookCaProviderType; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderWebhookCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderWebhookCaProvider(obj: SecretStoreV1Beta1SpecProviderWebhookCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Result formatting + * + * @schema SecretStoreV1Beta1SpecProviderWebhookResult + */ +export interface SecretStoreV1Beta1SpecProviderWebhookResult { + /** + * Json path of return value + * + * @schema SecretStoreV1Beta1SpecProviderWebhookResult#jsonPath + */ + readonly jsonPath?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderWebhookResult' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderWebhookResult(obj: SecretStoreV1Beta1SpecProviderWebhookResult | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'jsonPath': obj.jsonPath, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreV1Beta1SpecProviderWebhookSecrets + */ +export interface SecretStoreV1Beta1SpecProviderWebhookSecrets { + /** + * Name of this secret in templates + * + * @schema SecretStoreV1Beta1SpecProviderWebhookSecrets#name + */ + readonly name: string; + + /** + * Secret ref to fill in credentials + * + * @schema SecretStoreV1Beta1SpecProviderWebhookSecrets#secretRef + */ + readonly secretRef: SecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderWebhookSecrets' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderWebhookSecrets(obj: SecretStoreV1Beta1SpecProviderWebhookSecrets | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'name': obj.name, + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against Yandex Certificate Manager + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth + */ +export interface SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth { + /** + * The authorized key used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth#authorizedKeySecretRef + */ + readonly authorizedKeySecretRef?: SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth(obj: SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'authorizedKeySecretRef': toJson_SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef(obj.authorizedKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate Yandex.Cloud server certificate. + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider + */ +export interface SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider#certSecretRef + */ + readonly certSecretRef?: SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider(obj: SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'certSecretRef': toJson_SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef(obj.certSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the information necessary to authenticate against Yandex Lockbox + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockboxAuth + */ +export interface SecretStoreV1Beta1SpecProviderYandexlockboxAuth { + /** + * The authorized key used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockboxAuth#authorizedKeySecretRef + */ + readonly authorizedKeySecretRef?: SecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderYandexlockboxAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderYandexlockboxAuth(obj: SecretStoreV1Beta1SpecProviderYandexlockboxAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'authorizedKeySecretRef': toJson_SecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef(obj.authorizedKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate Yandex.Cloud server certificate. + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockboxCaProvider + */ +export interface SecretStoreV1Beta1SpecProviderYandexlockboxCaProvider { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockboxCaProvider#certSecretRef + */ + readonly certSecretRef?: SecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderYandexlockboxCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderYandexlockboxCaProvider(obj: SecretStoreV1Beta1SpecProviderYandexlockboxCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'certSecretRef': toJson_SecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef(obj.certSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Kubernetes authenticates with Akeyless by passing the ServiceAccount + * token stored in the named Secret resource. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth + */ +export interface SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth { + /** + * the Akeyless Kubernetes auth-method access-id + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth#accessID + */ + readonly accessId: string; + + /** + * Kubernetes-auth configuration name in Akeyless-Gateway + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth#k8sConfName + */ + readonly k8SConfName: string; + + /** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Akeyless. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef; + + /** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Akeyless. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth#serviceAccountRef + */ + readonly serviceAccountRef?: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth(obj: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessID': obj.accessId, + 'k8sConfName': obj.k8SConfName, + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef(obj.secretRef), + 'serviceAccountRef': toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Reference to a Secret that contains the details + * to authenticate with Akeyless. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef { + /** + * The SecretAccessID is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef#accessID + */ + readonly accessId?: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef#accessType + */ + readonly accessType?: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef#accessTypeParam + */ + readonly accessTypeParam?: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef(obj: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessID': toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId(obj.accessId), + 'accessType': toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType(obj.accessType), + 'accessTypeParam': toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam(obj.accessTypeParam), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessCaProviderType + */ +export enum SecretStoreV1Beta1SpecProviderAkeylessCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * Authenticate against Alibaba using RRSA. + * + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthRrsa + */ +export interface SecretStoreV1Beta1SpecProviderAlibabaAuthRrsa { + /** + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthRrsa#oidcProviderArn + */ + readonly oidcProviderArn: string; + + /** + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthRrsa#oidcTokenFilePath + */ + readonly oidcTokenFilePath: string; + + /** + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthRrsa#roleArn + */ + readonly roleArn: string; + + /** + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthRrsa#sessionName + */ + readonly sessionName: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAlibabaAuthRrsa' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAlibabaAuthRrsa(obj: SecretStoreV1Beta1SpecProviderAlibabaAuthRrsa | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'oidcProviderArn': obj.oidcProviderArn, + 'oidcTokenFilePath': obj.oidcTokenFilePath, + 'roleArn': obj.roleArn, + 'sessionName': obj.sessionName, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AlibabaAuthSecretRef holds secret references for Alibaba credentials. + * + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef { + /** + * The AccessKeyID is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef#accessKeyIDSecretRef + */ + readonly accessKeyIdSecretRef: SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef; + + /** + * The AccessKeySecret is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef#accessKeySecretSecretRef + */ + readonly accessKeySecretSecretRef: SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef(obj: SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessKeyIDSecretRef': toJson_SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef(obj.accessKeyIdSecretRef), + 'accessKeySecretSecretRef': toJson_SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef(obj.accessKeySecretSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Authenticate against AWS using service account tokens. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthJwt + */ +export interface SecretStoreV1Beta1SpecProviderAwsAuthJwt { + /** + * A reference to a ServiceAccount resource. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthJwt#serviceAccountRef + */ + readonly serviceAccountRef?: SecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAwsAuthJwt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAwsAuthJwt(obj: SecretStoreV1Beta1SpecProviderAwsAuthJwt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'serviceAccountRef': toJson_SecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AWSAuthSecretRef holds secret references for AWS credentials + * both AccessKeyID and SecretAccessKey must be defined in order to properly authenticate. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderAwsAuthSecretRef { + /** + * The AccessKeyID is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRef#accessKeyIDSecretRef + */ + readonly accessKeyIdSecretRef?: SecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef; + + /** + * The SecretAccessKey is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRef#secretAccessKeySecretRef + */ + readonly secretAccessKeySecretRef?: SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef; + + /** + * The SessionToken used for authentication + * This must be defined if AccessKeyID and SecretAccessKey are temporary credentials + * see: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRef#sessionTokenSecretRef + */ + readonly sessionTokenSecretRef?: SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAwsAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAwsAuthSecretRef(obj: SecretStoreV1Beta1SpecProviderAwsAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessKeyIDSecretRef': toJson_SecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef(obj.accessKeyIdSecretRef), + 'secretAccessKeySecretRef': toJson_SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef(obj.secretAccessKeySecretRef), + 'sessionTokenSecretRef': toJson_SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef(obj.sessionTokenSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The Azure clientId of the service principle or managed identity used for authentication. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId + */ +export interface SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId(obj: SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientId | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The Azure ClientSecret of the service principle used for authentication. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret + */ +export interface SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret(obj: SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefClientSecret | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The Azure tenantId of the managed identity used for authentication. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId + */ +export interface SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId(obj: SecretStoreV1Beta1SpecProviderAzurekvAuthSecretRefTenantId | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ChefAuthSecretRef holds secret references for chef server login credentials. + * + * @schema SecretStoreV1Beta1SpecProviderChefAuthSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderChefAuthSecretRef { + /** + * SecretKey is the Signing Key in PEM format, used for authentication. + * + * @schema SecretStoreV1Beta1SpecProviderChefAuthSecretRef#privateKeySecretRef + */ + readonly privateKeySecretRef: SecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderChefAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderChefAuthSecretRef(obj: SecretStoreV1Beta1SpecProviderChefAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'privateKeySecretRef': toJson_SecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef(obj.privateKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreV1Beta1SpecProviderConjurAuthApikey + */ +export interface SecretStoreV1Beta1SpecProviderConjurAuthApikey { + /** + * @schema SecretStoreV1Beta1SpecProviderConjurAuthApikey#account + */ + readonly account: string; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthApikey#apiKeyRef + */ + readonly apiKeyRef: SecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthApikey#userRef + */ + readonly userRef: SecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderConjurAuthApikey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderConjurAuthApikey(obj: SecretStoreV1Beta1SpecProviderConjurAuthApikey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'account': obj.account, + 'apiKeyRef': toJson_SecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef(obj.apiKeyRef), + 'userRef': toJson_SecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef(obj.userRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreV1Beta1SpecProviderConjurAuthJwt + */ +export interface SecretStoreV1Beta1SpecProviderConjurAuthJwt { + /** + * @schema SecretStoreV1Beta1SpecProviderConjurAuthJwt#account + */ + readonly account: string; + + /** + * Optional HostID for JWT authentication. This may be used depending + * on how the Conjur JWT authenticator policy is configured. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthJwt#hostId + */ + readonly hostId?: string; + + /** + * Optional SecretRef that refers to a key in a Secret resource containing JWT token to + * authenticate with Conjur using the JWT authentication method. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthJwt#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef; + + /** + * Optional ServiceAccountRef specifies the Kubernetes service account for which to request + * a token for with the `TokenRequest` API. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthJwt#serviceAccountRef + */ + readonly serviceAccountRef?: SecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef; + + /** + * The conjur authn jwt webservice id + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthJwt#serviceID + */ + readonly serviceId: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderConjurAuthJwt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderConjurAuthJwt(obj: SecretStoreV1Beta1SpecProviderConjurAuthJwt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'account': obj.account, + 'hostId': obj.hostId, + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef(obj.secretRef), + 'serviceAccountRef': toJson_SecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef(obj.serviceAccountRef), + 'serviceID': obj.serviceId, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreV1Beta1SpecProviderConjurCaProviderType + */ +export enum SecretStoreV1Beta1SpecProviderConjurCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * SecretRef references a key in a secret that will be used as value. + * + * @schema SecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef(obj: SecretStoreV1Beta1SpecProviderDelineaClientIdSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef references a key in a secret that will be used as value. + * + * @schema SecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef(obj: SecretStoreV1Beta1SpecProviderDelineaClientSecretSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreV1Beta1SpecProviderDopplerAuthSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderDopplerAuthSecretRef { + /** + * The DopplerToken is used for authentication. + * See https://docs.doppler.com/reference/api#authentication for auth token types. + * The Key attribute defaults to dopplerToken if not specified. + * + * @schema SecretStoreV1Beta1SpecProviderDopplerAuthSecretRef#dopplerToken + */ + readonly dopplerToken: SecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderDopplerAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderDopplerAuthSecretRef(obj: SecretStoreV1Beta1SpecProviderDopplerAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'dopplerToken': toJson_SecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken(obj.dopplerToken), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef is a reference to a secret containing the SDKMS API Key. + * + * @schema SecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef + */ +export interface SecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef(obj: SecretStoreV1Beta1SpecProviderFortanixApiKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef { + /** + * The SecretAccessKey is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef#secretAccessKeySecretRef + */ + readonly secretAccessKeySecretRef?: SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef(obj: SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretAccessKeySecretRef': toJson_SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef(obj.secretAccessKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity + */ +export interface SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity { + /** + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity#clusterLocation + */ + readonly clusterLocation: string; + + /** + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity#clusterName + */ + readonly clusterName: string; + + /** + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity#clusterProjectID + */ + readonly clusterProjectId?: string; + + /** + * A reference to a ServiceAccount resource. + * + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity#serviceAccountRef + */ + readonly serviceAccountRef: SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity(obj: SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentity | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clusterLocation': obj.clusterLocation, + 'clusterName': obj.clusterName, + 'clusterProjectID': obj.clusterProjectId, + 'serviceAccountRef': toJson_SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreV1Beta1SpecProviderGitlabAuthSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderGitlabAuthSecretRef { + /** + * AccessToken is used for authentication. + * + * @schema SecretStoreV1Beta1SpecProviderGitlabAuthSecretRef#accessToken + */ + readonly accessToken?: SecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderGitlabAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderGitlabAuthSecretRef(obj: SecretStoreV1Beta1SpecProviderGitlabAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessToken': toJson_SecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken(obj.accessToken), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * IBM Container-based auth with IAM Trusted Profile. + * + * @schema SecretStoreV1Beta1SpecProviderIbmAuthContainerAuth + */ +export interface SecretStoreV1Beta1SpecProviderIbmAuthContainerAuth { + /** + * @schema SecretStoreV1Beta1SpecProviderIbmAuthContainerAuth#iamEndpoint + */ + readonly iamEndpoint?: string; + + /** + * the IBM Trusted Profile + * + * @schema SecretStoreV1Beta1SpecProviderIbmAuthContainerAuth#profile + */ + readonly profile: string; + + /** + * Location the token is mounted on the pod + * + * @schema SecretStoreV1Beta1SpecProviderIbmAuthContainerAuth#tokenLocation + */ + readonly tokenLocation?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderIbmAuthContainerAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderIbmAuthContainerAuth(obj: SecretStoreV1Beta1SpecProviderIbmAuthContainerAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'iamEndpoint': obj.iamEndpoint, + 'profile': obj.profile, + 'tokenLocation': obj.tokenLocation, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreV1Beta1SpecProviderIbmAuthSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderIbmAuthSecretRef { + /** + * The SecretAccessKey is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderIbmAuthSecretRef#secretApiKeySecretRef + */ + readonly secretApiKeySecretRef?: SecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderIbmAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderIbmAuthSecretRef(obj: SecretStoreV1Beta1SpecProviderIbmAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretApiKeySecretRef': toJson_SecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef(obj.secretApiKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * has both clientCert and clientKey as secretKeySelector + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthCert + */ +export interface SecretStoreV1Beta1SpecProviderKubernetesAuthCert { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthCert#clientCert + */ + readonly clientCert?: SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert; + + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthCert#clientKey + */ + readonly clientKey?: SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderKubernetesAuthCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderKubernetesAuthCert(obj: SecretStoreV1Beta1SpecProviderKubernetesAuthCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientCert': toJson_SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert(obj.clientCert), + 'clientKey': toJson_SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey(obj.clientKey), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * points to a service account that should be used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount + */ +export interface SecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount(obj: SecretStoreV1Beta1SpecProviderKubernetesAuthServiceAccount | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * use static token to authenticate with + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthToken + */ +export interface SecretStoreV1Beta1SpecProviderKubernetesAuthToken { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthToken#bearerToken + */ + readonly bearerToken?: SecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderKubernetesAuthToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderKubernetesAuthToken(obj: SecretStoreV1Beta1SpecProviderKubernetesAuthToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'bearerToken': toJson_SecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken(obj.bearerToken), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * see: https://external-secrets.io/v0.4.1/spec/#external-secrets.io/v1alpha1.CAProvider + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesServerCaProvider + */ +export interface SecretStoreV1Beta1SpecProviderKubernetesServerCaProvider { + /** + * The key where the CA certificate can be found in the Secret or ConfigMap. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesServerCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesServerCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * Can only be defined when used in a ClusterSecretStore. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesServerCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesServerCaProvider#type + */ + readonly type: SecretStoreV1Beta1SpecProviderKubernetesServerCaProviderType; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderKubernetesServerCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderKubernetesServerCaProvider(obj: SecretStoreV1Beta1SpecProviderKubernetesServerCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * OnboardbaseAPIKey is the APIKey generated by an admin account. + * It is used to recognize and authorize access to a project and environment within onboardbase + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef + */ +export interface SecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef(obj: SecretStoreV1Beta1SpecProviderOnboardbaseAuthApiKeyRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * OnboardbasePasscode is the passcode attached to the API Key + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef + */ +export interface SecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef(obj: SecretStoreV1Beta1SpecProviderOnboardbaseAuthPasscodeRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * OnePasswordAuthSecretRef holds secret references for 1Password credentials. + * + * @schema SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef { + /** + * The ConnectToken is used for authentication to a 1Password Connect Server. + * + * @schema SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef#connectTokenSecretRef + */ + readonly connectTokenSecretRef: SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef(obj: SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'connectTokenSecretRef': toJson_SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef(obj.connectTokenSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to pass through sensitive information. + * + * @schema SecretStoreV1Beta1SpecProviderOracleAuthSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderOracleAuthSecretRef { + /** + * Fingerprint is the fingerprint of the API private key. + * + * @schema SecretStoreV1Beta1SpecProviderOracleAuthSecretRef#fingerprint + */ + readonly fingerprint: SecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint; + + /** + * PrivateKey is the user's API Signing Key in PEM format, used for authentication. + * + * @schema SecretStoreV1Beta1SpecProviderOracleAuthSecretRef#privatekey + */ + readonly privatekey: SecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderOracleAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderOracleAuthSecretRef(obj: SecretStoreV1Beta1SpecProviderOracleAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'fingerprint': toJson_SecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint(obj.fingerprint), + 'privatekey': toJson_SecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey(obj.privatekey), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef(obj: SecretStoreV1Beta1SpecProviderPassboltAuthPasswordSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef + */ +export interface SecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef(obj: SecretStoreV1Beta1SpecProviderPassboltAuthPrivateKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef { + /** + * Username / Password is used for authentication. + * + * @schema SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef#credentials + */ + readonly credentials?: SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef(obj: SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'credentials': toJson_SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials(obj.credentials), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef is a reference to a secret containing the Pulumi API token. + * + * @schema SecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef(obj: SecretStoreV1Beta1SpecProviderPulumiAccessTokenSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef references a key in a secret that will be used as value. + * + * @schema SecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef + */ +export interface SecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef(obj: SecretStoreV1Beta1SpecProviderScalewayAccessKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef references a key in a secret that will be used as value. + * + * @schema SecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef + */ +export interface SecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef(obj: SecretStoreV1Beta1SpecProviderScalewaySecretKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef(obj: SecretStoreV1Beta1SpecProviderSenhaseguraAuthClientSecretSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AppRole authenticates with Vault using the App Role auth mechanism, + * with the role and secret stored in a Kubernetes Secret resource. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthAppRole + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthAppRole { + /** + * Path where the App Role authentication backend is mounted + * in Vault, e.g: "approle" + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthAppRole#path + */ + readonly path: string; + + /** + * RoleID configured in the App Role authentication backend when setting + * up the authentication backend in Vault. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthAppRole#roleId + */ + readonly roleId?: string; + + /** + * Reference to a key in a Secret that contains the App Role ID used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role id. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthAppRole#roleRef + */ + readonly roleRef?: SecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef; + + /** + * Reference to a key in a Secret that contains the App Role secret used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role secret. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthAppRole#secretRef + */ + readonly secretRef: SecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthAppRole' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthAppRole(obj: SecretStoreV1Beta1SpecProviderVaultAuthAppRole | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'path': obj.path, + 'roleId': obj.roleId, + 'roleRef': toJson_SecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef(obj.roleRef), + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Cert authenticates with TLS Certificates by passing client certificate, private key and ca certificate + * Cert authentication method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthCert + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthCert { + /** + * ClientCert is a certificate to authenticate using the Cert Vault + * authentication method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthCert#clientCert + */ + readonly clientCert?: SecretStoreV1Beta1SpecProviderVaultAuthCertClientCert; + + /** + * SecretRef to a key in a Secret resource containing client private key to + * authenticate with Vault using the Cert authentication method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthCert#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthCert(obj: SecretStoreV1Beta1SpecProviderVaultAuthCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientCert': toJson_SecretStoreV1Beta1SpecProviderVaultAuthCertClientCert(obj.clientCert), + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Iam authenticates with vault by passing a special AWS request signed with AWS IAM credentials + * AWS IAM authentication method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIam + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthIam { + /** + * AWS External ID set on assumed IAM roles + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIam#externalID + */ + readonly externalId?: string; + + /** + * Specify a service account with IRSA enabled + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIam#jwt + */ + readonly jwt?: SecretStoreV1Beta1SpecProviderVaultAuthIamJwt; + + /** + * Path where the AWS auth method is enabled in Vault, e.g: "aws" + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIam#path + */ + readonly path?: string; + + /** + * AWS region + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIam#region + */ + readonly region?: string; + + /** + * This is the AWS role to be assumed before talking to vault + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIam#role + */ + readonly role?: string; + + /** + * Specify credentials in a Secret object + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIam#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef; + + /** + * X-Vault-AWS-IAM-Server-ID is an additional header used by Vault IAM auth method to mitigate against different types of replay attacks. More details here: https://developer.hashicorp.com/vault/docs/auth/aws + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIam#vaultAwsIamServerID + */ + readonly vaultAwsIamServerId?: string; + + /** + * Vault Role. In vault, a role describes an identity with a set of permissions, groups, or policies you want to attach a user of the secrets engine + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIam#vaultRole + */ + readonly vaultRole: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthIam' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthIam(obj: SecretStoreV1Beta1SpecProviderVaultAuthIam | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'externalID': obj.externalId, + 'jwt': toJson_SecretStoreV1Beta1SpecProviderVaultAuthIamJwt(obj.jwt), + 'path': obj.path, + 'region': obj.region, + 'role': obj.role, + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef(obj.secretRef), + 'vaultAwsIamServerID': obj.vaultAwsIamServerId, + 'vaultRole': obj.vaultRole, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Jwt authenticates with Vault by passing role and JWT token using the + * JWT/OIDC authentication method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwt + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthJwt { + /** + * Optional ServiceAccountToken specifies the Kubernetes service account for which to request + * a token for with the `TokenRequest` API. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwt#kubernetesServiceAccountToken + */ + readonly kubernetesServiceAccountToken?: SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken; + + /** + * Path where the JWT authentication backend is mounted + * in Vault, e.g: "jwt" + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwt#path + */ + readonly path: string; + + /** + * Role is a JWT role to authenticate using the JWT/OIDC Vault + * authentication method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwt#role + */ + readonly role?: string; + + /** + * Optional SecretRef that refers to a key in a Secret resource containing JWT token to + * authenticate with Vault using the JWT/OIDC authentication method. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwt#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthJwt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthJwt(obj: SecretStoreV1Beta1SpecProviderVaultAuthJwt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kubernetesServiceAccountToken': toJson_SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken(obj.kubernetesServiceAccountToken), + 'path': obj.path, + 'role': obj.role, + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Kubernetes authenticates with Vault by passing the ServiceAccount + * token stored in the named Secret resource to the Vault server. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthKubernetes + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthKubernetes { + /** + * Path where the Kubernetes authentication backend is mounted in Vault, e.g: + * "kubernetes" + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthKubernetes#mountPath + */ + readonly mountPath: string; + + /** + * A required field containing the Vault Role to assume. A Role binds a + * Kubernetes ServiceAccount with a set of Vault policies. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthKubernetes#role + */ + readonly role: string; + + /** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Vault. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthKubernetes#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef; + + /** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Vault. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthKubernetes#serviceAccountRef + */ + readonly serviceAccountRef?: SecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthKubernetes' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthKubernetes(obj: SecretStoreV1Beta1SpecProviderVaultAuthKubernetes | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'mountPath': obj.mountPath, + 'role': obj.role, + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef(obj.secretRef), + 'serviceAccountRef': toJson_SecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Ldap authenticates with Vault by passing username/password pair using + * the LDAP authentication method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthLdap + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthLdap { + /** + * Path where the LDAP authentication backend is mounted + * in Vault, e.g: "ldap" + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthLdap#path + */ + readonly path: string; + + /** + * SecretRef to a key in a Secret resource containing password for the LDAP + * user used to authenticate with Vault using the LDAP authentication + * method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthLdap#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef; + + /** + * Username is a LDAP user name used to authenticate using the LDAP Vault + * authentication method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthLdap#username + */ + readonly username: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthLdap' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthLdap(obj: SecretStoreV1Beta1SpecProviderVaultAuthLdap | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'path': obj.path, + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef(obj.secretRef), + 'username': obj.username, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * TokenSecretRef authenticates with Vault by presenting a token. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef(obj: SecretStoreV1Beta1SpecProviderVaultAuthTokenSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * UserPass authenticates with Vault by passing username/password pair + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthUserPass + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthUserPass { + /** + * Path where the UserPassword authentication backend is mounted + * in Vault, e.g: "user" + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthUserPass#path + */ + readonly path: string; + + /** + * SecretRef to a key in a Secret resource containing password for the + * user used to authenticate with Vault using the UserPass authentication + * method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthUserPass#secretRef + */ + readonly secretRef?: SecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef; + + /** + * Username is a user name used to authenticate using the UserPass Vault + * authentication method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthUserPass#username + */ + readonly username: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthUserPass' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthUserPass(obj: SecretStoreV1Beta1SpecProviderVaultAuthUserPass | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'path': obj.path, + 'secretRef': toJson_SecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef(obj.secretRef), + 'username': obj.username, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreV1Beta1SpecProviderVaultCaProviderType + */ +export enum SecretStoreV1Beta1SpecProviderVaultCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * CertSecretRef is a certificate added to the transport layer + * when communicating with the Vault server. + * If no key for the Secret is specified, external-secret will default to 'tls.crt'. + * + * @schema SecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef(obj: SecretStoreV1Beta1SpecProviderVaultTlsCertSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * KeySecretRef to a key in a Secret resource containing client private key + * added to the transport layer when communicating with the Vault server. + * If no key for the Secret is specified, external-secret will default to 'tls.key'. + * + * @schema SecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef(obj: SecretStoreV1Beta1SpecProviderVaultTlsKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreV1Beta1SpecProviderWebhookCaProviderType + */ +export enum SecretStoreV1Beta1SpecProviderWebhookCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * Secret ref to fill in credentials + * + * @schema SecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef(obj: SecretStoreV1Beta1SpecProviderWebhookSecretsSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The authorized key used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef + */ +export interface SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef(obj: SecretStoreV1Beta1SpecProviderYandexcertificatemanagerAuthAuthorizedKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef(obj: SecretStoreV1Beta1SpecProviderYandexcertificatemanagerCaProviderCertSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The authorized key used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef + */ +export interface SecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef(obj: SecretStoreV1Beta1SpecProviderYandexlockboxAuthAuthorizedKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef(obj: SecretStoreV1Beta1SpecProviderYandexlockboxCaProviderCertSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Akeyless. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef(obj: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Akeyless. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef + */ +export interface SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef(obj: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefKubernetesAuthServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessID is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId + */ +export interface SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId(obj: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessId | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType + */ +export interface SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType(obj: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessType | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam + */ +export interface SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam(obj: SecretStoreV1Beta1SpecProviderAkeylessAuthSecretRefSecretRefAccessTypeParam | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeyID is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef(obj: SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeyIdSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeySecret is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef(obj: SecretStoreV1Beta1SpecProviderAlibabaAuthSecretRefAccessKeySecretSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a ServiceAccount resource. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef + */ +export interface SecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef(obj: SecretStoreV1Beta1SpecProviderAwsAuthJwtServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeyID is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef(obj: SecretStoreV1Beta1SpecProviderAwsAuthSecretRefAccessKeyIdSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef + */ +export interface SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef(obj: SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSecretAccessKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SessionToken used for authentication + * This must be defined if AccessKeyID and SecretAccessKey are temporary credentials + * see: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef(obj: SecretStoreV1Beta1SpecProviderAwsAuthSecretRefSessionTokenSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretKey is the Signing Key in PEM format, used for authentication. + * + * @schema SecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef + */ +export interface SecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef(obj: SecretStoreV1Beta1SpecProviderChefAuthSecretRefPrivateKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef + */ +export interface SecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef(obj: SecretStoreV1Beta1SpecProviderConjurAuthApikeyApiKeyRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef + */ +export interface SecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef(obj: SecretStoreV1Beta1SpecProviderConjurAuthApikeyUserRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional SecretRef that refers to a key in a Secret resource containing JWT token to + * authenticate with Conjur using the JWT authentication method. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef(obj: SecretStoreV1Beta1SpecProviderConjurAuthJwtSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional ServiceAccountRef specifies the Kubernetes service account for which to request + * a token for with the `TokenRequest` API. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef + */ +export interface SecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef(obj: SecretStoreV1Beta1SpecProviderConjurAuthJwtServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The DopplerToken is used for authentication. + * See https://docs.doppler.com/reference/api#authentication for auth token types. + * The Key attribute defaults to dopplerToken if not specified. + * + * @schema SecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken + */ +export interface SecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken(obj: SecretStoreV1Beta1SpecProviderDopplerAuthSecretRefDopplerToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef + */ +export interface SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef(obj: SecretStoreV1Beta1SpecProviderGcpsmAuthSecretRefSecretAccessKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a ServiceAccount resource. + * + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef + */ +export interface SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef(obj: SecretStoreV1Beta1SpecProviderGcpsmAuthWorkloadIdentityServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AccessToken is used for authentication. + * + * @schema SecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken + */ +export interface SecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken(obj: SecretStoreV1Beta1SpecProviderGitlabAuthSecretRefAccessToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef + */ +export interface SecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef(obj: SecretStoreV1Beta1SpecProviderIbmAuthSecretRefSecretApiKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert + */ +export interface SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert(obj: SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey + */ +export interface SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey(obj: SecretStoreV1Beta1SpecProviderKubernetesAuthCertClientKey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken + */ +export interface SecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken(obj: SecretStoreV1Beta1SpecProviderKubernetesAuthTokenBearerToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema SecretStoreV1Beta1SpecProviderKubernetesServerCaProviderType + */ +export enum SecretStoreV1Beta1SpecProviderKubernetesServerCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * The ConnectToken is used for authentication to a 1Password Connect Server. + * + * @schema SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef(obj: SecretStoreV1Beta1SpecProviderOnepasswordAuthSecretRefConnectTokenSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Fingerprint is the fingerprint of the API private key. + * + * @schema SecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint + */ +export interface SecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint(obj: SecretStoreV1Beta1SpecProviderOracleAuthSecretRefFingerprint | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * PrivateKey is the user's API Signing Key in PEM format, used for authentication. + * + * @schema SecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey + */ +export interface SecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey(obj: SecretStoreV1Beta1SpecProviderOracleAuthSecretRefPrivatekey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Username / Password is used for authentication. + * + * @schema SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials + */ +export interface SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials(obj: SecretStoreV1Beta1SpecProviderPassworddepotAuthSecretRefCredentials | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Reference to a key in a Secret that contains the App Role ID used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role id. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef(obj: SecretStoreV1Beta1SpecProviderVaultAuthAppRoleRoleRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Reference to a key in a Secret that contains the App Role secret used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role secret. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef(obj: SecretStoreV1Beta1SpecProviderVaultAuthAppRoleSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ClientCert is a certificate to authenticate using the Cert Vault + * authentication method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthCertClientCert + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthCertClientCert { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthCertClientCert#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthCertClientCert#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthCertClientCert#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthCertClientCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthCertClientCert(obj: SecretStoreV1Beta1SpecProviderVaultAuthCertClientCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to a key in a Secret resource containing client private key to + * authenticate with Vault using the Cert authentication method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef(obj: SecretStoreV1Beta1SpecProviderVaultAuthCertSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Specify a service account with IRSA enabled + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamJwt + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthIamJwt { + /** + * A reference to a ServiceAccount resource. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamJwt#serviceAccountRef + */ + readonly serviceAccountRef?: SecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthIamJwt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthIamJwt(obj: SecretStoreV1Beta1SpecProviderVaultAuthIamJwt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'serviceAccountRef': toJson_SecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Specify credentials in a Secret object + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef { + /** + * The AccessKeyID is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef#accessKeyIDSecretRef + */ + readonly accessKeyIdSecretRef?: SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef; + + /** + * The SecretAccessKey is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef#secretAccessKeySecretRef + */ + readonly secretAccessKeySecretRef?: SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef; + + /** + * The SessionToken used for authentication + * This must be defined if AccessKeyID and SecretAccessKey are temporary credentials + * see: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef#sessionTokenSecretRef + */ + readonly sessionTokenSecretRef?: SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef(obj: SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessKeyIDSecretRef': toJson_SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef(obj.accessKeyIdSecretRef), + 'secretAccessKeySecretRef': toJson_SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef(obj.secretAccessKeySecretRef), + 'sessionTokenSecretRef': toJson_SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef(obj.sessionTokenSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional ServiceAccountToken specifies the Kubernetes service account for which to request + * a token for with the `TokenRequest` API. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken { + /** + * Optional audiences field that will be used to request a temporary Kubernetes service + * account token for the service account referenced by `serviceAccountRef`. + * Defaults to a single audience `vault` it not specified. + * Deprecated: use serviceAccountRef.Audiences instead + * + * @default a single audience `vault` it not specified. + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken#audiences + */ + readonly audiences?: string[]; + + /** + * Optional expiration time in seconds that will be used to request a temporary + * Kubernetes service account token for the service account referenced by + * `serviceAccountRef`. + * Deprecated: this will be removed in the future. + * Defaults to 10 minutes. + * + * @default 10 minutes. + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken#expirationSeconds + */ + readonly expirationSeconds?: number; + + /** + * Service account field containing the name of a kubernetes ServiceAccount. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken#serviceAccountRef + */ + readonly serviceAccountRef: SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken(obj: SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'expirationSeconds': obj.expirationSeconds, + 'serviceAccountRef': toJson_SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional SecretRef that refers to a key in a Secret resource containing JWT token to + * authenticate with Vault using the JWT/OIDC authentication method. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef(obj: SecretStoreV1Beta1SpecProviderVaultAuthJwtSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Vault. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef(obj: SecretStoreV1Beta1SpecProviderVaultAuthKubernetesSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Vault. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef(obj: SecretStoreV1Beta1SpecProviderVaultAuthKubernetesServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to a key in a Secret resource containing password for the LDAP + * user used to authenticate with Vault using the LDAP authentication + * method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef(obj: SecretStoreV1Beta1SpecProviderVaultAuthLdapSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to a key in a Secret resource containing password for the + * user used to authenticate with Vault using the UserPass authentication + * method + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef(obj: SecretStoreV1Beta1SpecProviderVaultAuthUserPassSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a ServiceAccount resource. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef(obj: SecretStoreV1Beta1SpecProviderVaultAuthIamJwtServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeyID is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef(obj: SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefAccessKeyIdSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef(obj: SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSecretAccessKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SessionToken used for authentication + * This must be defined if AccessKeyID and SecretAccessKey are temporary credentials + * see: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef(obj: SecretStoreV1Beta1SpecProviderVaultAuthIamSecretRefSessionTokenSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Service account field containing the name of a kubernetes ServiceAccount. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef + */ +export interface SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef(obj: SecretStoreV1Beta1SpecProviderVaultAuthJwtKubernetesServiceAccountTokenServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + diff --git a/k8s/imports/generators.external-secrets.io.ts b/k8s/imports/generators.external-secrets.io.ts new file mode 100644 index 0000000..dffae49 --- /dev/null +++ b/k8s/imports/generators.external-secrets.io.ts @@ -0,0 +1,4075 @@ +// generated by cdk8s +import { ApiObject, ApiObjectMetadata, GroupVersionKind } from 'cdk8s'; +import { Construct } from 'constructs'; + + +/** + * ACRAccessToken returns a Azure Container Registry token +that can be used for pushing/pulling images. +Note: by default it will return an ACR Refresh Token with full access +(depending on the identity). +This can be scoped down to the repository level using .spec.scope. +In case scope is defined it will return an ACR Access Token. + + +See docs: https://github.com/Azure/acr/blob/main/docs/AAD-OAuth.md + * + * @schema ACRAccessToken + */ +export class AcrAccessToken extends ApiObject { + /** + * Returns the apiVersion and kind for "ACRAccessToken" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'generators.external-secrets.io/v1alpha1', + kind: 'ACRAccessToken', + } + + /** + * Renders a Kubernetes manifest for "ACRAccessToken". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: AcrAccessTokenProps = {}): any { + return { + ...AcrAccessToken.GVK, + ...toJson_AcrAccessTokenProps(props), + }; + } + + /** + * Defines a "ACRAccessToken" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: AcrAccessTokenProps = {}) { + super(scope, id, { + ...AcrAccessToken.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...AcrAccessToken.GVK, + ...toJson_AcrAccessTokenProps(resolved), + }; + } +} + +/** + * ACRAccessToken returns a Azure Container Registry token + * that can be used for pushing/pulling images. + * Note: by default it will return an ACR Refresh Token with full access + * (depending on the identity). + * This can be scoped down to the repository level using .spec.scope. + * In case scope is defined it will return an ACR Access Token. + * + * + * See docs: https://github.com/Azure/acr/blob/main/docs/AAD-OAuth.md + * + * @schema ACRAccessToken + */ +export interface AcrAccessTokenProps { + /** + * @schema ACRAccessToken#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * ACRAccessTokenSpec defines how to generate the access token + * e.g. how to authenticate and which registry to use. + * see: https://github.com/Azure/acr/blob/main/docs/AAD-OAuth.md#overview + * + * @schema ACRAccessToken#spec + */ + readonly spec?: AcrAccessTokenSpec; + +} + +/** + * Converts an object of type 'AcrAccessTokenProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_AcrAccessTokenProps(obj: AcrAccessTokenProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_AcrAccessTokenSpec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ACRAccessTokenSpec defines how to generate the access token + * e.g. how to authenticate and which registry to use. + * see: https://github.com/Azure/acr/blob/main/docs/AAD-OAuth.md#overview + * + * @schema AcrAccessTokenSpec + */ +export interface AcrAccessTokenSpec { + /** + * @schema AcrAccessTokenSpec#auth + */ + readonly auth: AcrAccessTokenSpecAuth; + + /** + * EnvironmentType specifies the Azure cloud environment endpoints to use for + * connecting and authenticating with Azure. By default it points to the public cloud AAD endpoint. + * The following endpoints are available, also see here: https://github.com/Azure/go-autorest/blob/main/autorest/azure/environments.go#L152 + * PublicCloud, USGovernmentCloud, ChinaCloud, GermanCloud + * + * @schema AcrAccessTokenSpec#environmentType + */ + readonly environmentType?: AcrAccessTokenSpecEnvironmentType; + + /** + * the domain name of the ACR registry + * e.g. foobarexample.azurecr.io + * + * @schema AcrAccessTokenSpec#registry + */ + readonly registry: string; + + /** + * Define the scope for the access token, e.g. pull/push access for a repository. + * if not provided it will return a refresh token that has full scope. + * Note: you need to pin it down to the repository level, there is no wildcard available. + * + * + * examples: + * repository:my-repository:pull,push + * repository:my-repository:pull + * + * + * see docs for details: https://docs.docker.com/registry/spec/auth/scope/ + * + * @schema AcrAccessTokenSpec#scope + */ + readonly scope?: string; + + /** + * TenantID configures the Azure Tenant to send requests to. Required for ServicePrincipal auth type. + * + * @schema AcrAccessTokenSpec#tenantId + */ + readonly tenantId?: string; + +} + +/** + * Converts an object of type 'AcrAccessTokenSpec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_AcrAccessTokenSpec(obj: AcrAccessTokenSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_AcrAccessTokenSpecAuth(obj.auth), + 'environmentType': obj.environmentType, + 'registry': obj.registry, + 'scope': obj.scope, + 'tenantId': obj.tenantId, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema AcrAccessTokenSpecAuth + */ +export interface AcrAccessTokenSpecAuth { + /** + * ManagedIdentity uses Azure Managed Identity to authenticate with Azure. + * + * @schema AcrAccessTokenSpecAuth#managedIdentity + */ + readonly managedIdentity?: AcrAccessTokenSpecAuthManagedIdentity; + + /** + * ServicePrincipal uses Azure Service Principal credentials to authenticate with Azure. + * + * @schema AcrAccessTokenSpecAuth#servicePrincipal + */ + readonly servicePrincipal?: AcrAccessTokenSpecAuthServicePrincipal; + + /** + * WorkloadIdentity uses Azure Workload Identity to authenticate with Azure. + * + * @schema AcrAccessTokenSpecAuth#workloadIdentity + */ + readonly workloadIdentity?: AcrAccessTokenSpecAuthWorkloadIdentity; + +} + +/** + * Converts an object of type 'AcrAccessTokenSpecAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_AcrAccessTokenSpecAuth(obj: AcrAccessTokenSpecAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'managedIdentity': toJson_AcrAccessTokenSpecAuthManagedIdentity(obj.managedIdentity), + 'servicePrincipal': toJson_AcrAccessTokenSpecAuthServicePrincipal(obj.servicePrincipal), + 'workloadIdentity': toJson_AcrAccessTokenSpecAuthWorkloadIdentity(obj.workloadIdentity), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * EnvironmentType specifies the Azure cloud environment endpoints to use for + * connecting and authenticating with Azure. By default it points to the public cloud AAD endpoint. + * The following endpoints are available, also see here: https://github.com/Azure/go-autorest/blob/main/autorest/azure/environments.go#L152 + * PublicCloud, USGovernmentCloud, ChinaCloud, GermanCloud + * + * @schema AcrAccessTokenSpecEnvironmentType + */ +export enum AcrAccessTokenSpecEnvironmentType { + /** PublicCloud */ + PUBLIC_CLOUD = "PublicCloud", + /** USGovernmentCloud */ + US_GOVERNMENT_CLOUD = "USGovernmentCloud", + /** ChinaCloud */ + CHINA_CLOUD = "ChinaCloud", + /** GermanCloud */ + GERMAN_CLOUD = "GermanCloud", +} + +/** + * ManagedIdentity uses Azure Managed Identity to authenticate with Azure. + * + * @schema AcrAccessTokenSpecAuthManagedIdentity + */ +export interface AcrAccessTokenSpecAuthManagedIdentity { + /** + * If multiple Managed Identity is assigned to the pod, you can select the one to be used + * + * @schema AcrAccessTokenSpecAuthManagedIdentity#identityId + */ + readonly identityId?: string; + +} + +/** + * Converts an object of type 'AcrAccessTokenSpecAuthManagedIdentity' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_AcrAccessTokenSpecAuthManagedIdentity(obj: AcrAccessTokenSpecAuthManagedIdentity | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'identityId': obj.identityId, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ServicePrincipal uses Azure Service Principal credentials to authenticate with Azure. + * + * @schema AcrAccessTokenSpecAuthServicePrincipal + */ +export interface AcrAccessTokenSpecAuthServicePrincipal { + /** + * Configuration used to authenticate with Azure using static + * credentials stored in a Kind=Secret. + * + * @schema AcrAccessTokenSpecAuthServicePrincipal#secretRef + */ + readonly secretRef: AcrAccessTokenSpecAuthServicePrincipalSecretRef; + +} + +/** + * Converts an object of type 'AcrAccessTokenSpecAuthServicePrincipal' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_AcrAccessTokenSpecAuthServicePrincipal(obj: AcrAccessTokenSpecAuthServicePrincipal | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_AcrAccessTokenSpecAuthServicePrincipalSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * WorkloadIdentity uses Azure Workload Identity to authenticate with Azure. + * + * @schema AcrAccessTokenSpecAuthWorkloadIdentity + */ +export interface AcrAccessTokenSpecAuthWorkloadIdentity { + /** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema AcrAccessTokenSpecAuthWorkloadIdentity#serviceAccountRef + */ + readonly serviceAccountRef?: AcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef; + +} + +/** + * Converts an object of type 'AcrAccessTokenSpecAuthWorkloadIdentity' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_AcrAccessTokenSpecAuthWorkloadIdentity(obj: AcrAccessTokenSpecAuthWorkloadIdentity | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'serviceAccountRef': toJson_AcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Configuration used to authenticate with Azure using static + * credentials stored in a Kind=Secret. + * + * @schema AcrAccessTokenSpecAuthServicePrincipalSecretRef + */ +export interface AcrAccessTokenSpecAuthServicePrincipalSecretRef { + /** + * The Azure clientId of the service principle used for authentication. + * + * @schema AcrAccessTokenSpecAuthServicePrincipalSecretRef#clientId + */ + readonly clientId?: AcrAccessTokenSpecAuthServicePrincipalSecretRefClientId; + + /** + * The Azure ClientSecret of the service principle used for authentication. + * + * @schema AcrAccessTokenSpecAuthServicePrincipalSecretRef#clientSecret + */ + readonly clientSecret?: AcrAccessTokenSpecAuthServicePrincipalSecretRefClientSecret; + +} + +/** + * Converts an object of type 'AcrAccessTokenSpecAuthServicePrincipalSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_AcrAccessTokenSpecAuthServicePrincipalSecretRef(obj: AcrAccessTokenSpecAuthServicePrincipalSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientId': toJson_AcrAccessTokenSpecAuthServicePrincipalSecretRefClientId(obj.clientId), + 'clientSecret': toJson_AcrAccessTokenSpecAuthServicePrincipalSecretRefClientSecret(obj.clientSecret), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ServiceAccountRef specified the service account + * that should be used when authenticating with WorkloadIdentity. + * + * @schema AcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef + */ +export interface AcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema AcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema AcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema AcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'AcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_AcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef(obj: AcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The Azure clientId of the service principle used for authentication. + * + * @schema AcrAccessTokenSpecAuthServicePrincipalSecretRefClientId + */ +export interface AcrAccessTokenSpecAuthServicePrincipalSecretRefClientId { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema AcrAccessTokenSpecAuthServicePrincipalSecretRefClientId#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema AcrAccessTokenSpecAuthServicePrincipalSecretRefClientId#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema AcrAccessTokenSpecAuthServicePrincipalSecretRefClientId#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'AcrAccessTokenSpecAuthServicePrincipalSecretRefClientId' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_AcrAccessTokenSpecAuthServicePrincipalSecretRefClientId(obj: AcrAccessTokenSpecAuthServicePrincipalSecretRefClientId | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The Azure ClientSecret of the service principle used for authentication. + * + * @schema AcrAccessTokenSpecAuthServicePrincipalSecretRefClientSecret + */ +export interface AcrAccessTokenSpecAuthServicePrincipalSecretRefClientSecret { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema AcrAccessTokenSpecAuthServicePrincipalSecretRefClientSecret#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema AcrAccessTokenSpecAuthServicePrincipalSecretRefClientSecret#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema AcrAccessTokenSpecAuthServicePrincipalSecretRefClientSecret#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'AcrAccessTokenSpecAuthServicePrincipalSecretRefClientSecret' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_AcrAccessTokenSpecAuthServicePrincipalSecretRefClientSecret(obj: AcrAccessTokenSpecAuthServicePrincipalSecretRefClientSecret | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * ECRAuthorizationTokenSpec uses the GetAuthorizationToken API to retrieve an +authorization token. +The authorization token is valid for 12 hours. +The authorizationToken returned is a base64 encoded string that can be decoded +and used in a docker login command to authenticate to a registry. +For more information, see Registry authentication (https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html#registry_auth) in the Amazon Elastic Container Registry User Guide. + * + * @schema ECRAuthorizationToken + */ +export class EcrAuthorizationToken extends ApiObject { + /** + * Returns the apiVersion and kind for "ECRAuthorizationToken" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'generators.external-secrets.io/v1alpha1', + kind: 'ECRAuthorizationToken', + } + + /** + * Renders a Kubernetes manifest for "ECRAuthorizationToken". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: EcrAuthorizationTokenProps = {}): any { + return { + ...EcrAuthorizationToken.GVK, + ...toJson_EcrAuthorizationTokenProps(props), + }; + } + + /** + * Defines a "ECRAuthorizationToken" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: EcrAuthorizationTokenProps = {}) { + super(scope, id, { + ...EcrAuthorizationToken.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...EcrAuthorizationToken.GVK, + ...toJson_EcrAuthorizationTokenProps(resolved), + }; + } +} + +/** + * ECRAuthorizationTokenSpec uses the GetAuthorizationToken API to retrieve an + * authorization token. + * The authorization token is valid for 12 hours. + * The authorizationToken returned is a base64 encoded string that can be decoded + * and used in a docker login command to authenticate to a registry. + * For more information, see Registry authentication (https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html#registry_auth) in the Amazon Elastic Container Registry User Guide. + * + * @schema ECRAuthorizationToken + */ +export interface EcrAuthorizationTokenProps { + /** + * @schema ECRAuthorizationToken#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * @schema ECRAuthorizationToken#spec + */ + readonly spec?: EcrAuthorizationTokenSpec; + +} + +/** + * Converts an object of type 'EcrAuthorizationTokenProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_EcrAuthorizationTokenProps(obj: EcrAuthorizationTokenProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_EcrAuthorizationTokenSpec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema EcrAuthorizationTokenSpec + */ +export interface EcrAuthorizationTokenSpec { + /** + * Auth defines how to authenticate with AWS + * + * @schema EcrAuthorizationTokenSpec#auth + */ + readonly auth?: EcrAuthorizationTokenSpecAuth; + + /** + * Region specifies the region to operate in. + * + * @schema EcrAuthorizationTokenSpec#region + */ + readonly region: string; + + /** + * You can assume a role before making calls to the + * desired AWS service. + * + * @schema EcrAuthorizationTokenSpec#role + */ + readonly role?: string; + +} + +/** + * Converts an object of type 'EcrAuthorizationTokenSpec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_EcrAuthorizationTokenSpec(obj: EcrAuthorizationTokenSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_EcrAuthorizationTokenSpecAuth(obj.auth), + 'region': obj.region, + 'role': obj.role, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines how to authenticate with AWS + * + * @schema EcrAuthorizationTokenSpecAuth + */ +export interface EcrAuthorizationTokenSpecAuth { + /** + * Authenticate against AWS using service account tokens. + * + * @schema EcrAuthorizationTokenSpecAuth#jwt + */ + readonly jwt?: EcrAuthorizationTokenSpecAuthJwt; + + /** + * AWSAuthSecretRef holds secret references for AWS credentials + * both AccessKeyID and SecretAccessKey must be defined in order to properly authenticate. + * + * @schema EcrAuthorizationTokenSpecAuth#secretRef + */ + readonly secretRef?: EcrAuthorizationTokenSpecAuthSecretRef; + +} + +/** + * Converts an object of type 'EcrAuthorizationTokenSpecAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_EcrAuthorizationTokenSpecAuth(obj: EcrAuthorizationTokenSpecAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'jwt': toJson_EcrAuthorizationTokenSpecAuthJwt(obj.jwt), + 'secretRef': toJson_EcrAuthorizationTokenSpecAuthSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Authenticate against AWS using service account tokens. + * + * @schema EcrAuthorizationTokenSpecAuthJwt + */ +export interface EcrAuthorizationTokenSpecAuthJwt { + /** + * A reference to a ServiceAccount resource. + * + * @schema EcrAuthorizationTokenSpecAuthJwt#serviceAccountRef + */ + readonly serviceAccountRef?: EcrAuthorizationTokenSpecAuthJwtServiceAccountRef; + +} + +/** + * Converts an object of type 'EcrAuthorizationTokenSpecAuthJwt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_EcrAuthorizationTokenSpecAuthJwt(obj: EcrAuthorizationTokenSpecAuthJwt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'serviceAccountRef': toJson_EcrAuthorizationTokenSpecAuthJwtServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AWSAuthSecretRef holds secret references for AWS credentials + * both AccessKeyID and SecretAccessKey must be defined in order to properly authenticate. + * + * @schema EcrAuthorizationTokenSpecAuthSecretRef + */ +export interface EcrAuthorizationTokenSpecAuthSecretRef { + /** + * The AccessKeyID is used for authentication + * + * @schema EcrAuthorizationTokenSpecAuthSecretRef#accessKeyIDSecretRef + */ + readonly accessKeyIdSecretRef?: EcrAuthorizationTokenSpecAuthSecretRefAccessKeyIdSecretRef; + + /** + * The SecretAccessKey is used for authentication + * + * @schema EcrAuthorizationTokenSpecAuthSecretRef#secretAccessKeySecretRef + */ + readonly secretAccessKeySecretRef?: EcrAuthorizationTokenSpecAuthSecretRefSecretAccessKeySecretRef; + + /** + * The SessionToken used for authentication + * This must be defined if AccessKeyID and SecretAccessKey are temporary credentials + * see: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html + * + * @schema EcrAuthorizationTokenSpecAuthSecretRef#sessionTokenSecretRef + */ + readonly sessionTokenSecretRef?: EcrAuthorizationTokenSpecAuthSecretRefSessionTokenSecretRef; + +} + +/** + * Converts an object of type 'EcrAuthorizationTokenSpecAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_EcrAuthorizationTokenSpecAuthSecretRef(obj: EcrAuthorizationTokenSpecAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessKeyIDSecretRef': toJson_EcrAuthorizationTokenSpecAuthSecretRefAccessKeyIdSecretRef(obj.accessKeyIdSecretRef), + 'secretAccessKeySecretRef': toJson_EcrAuthorizationTokenSpecAuthSecretRefSecretAccessKeySecretRef(obj.secretAccessKeySecretRef), + 'sessionTokenSecretRef': toJson_EcrAuthorizationTokenSpecAuthSecretRefSessionTokenSecretRef(obj.sessionTokenSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a ServiceAccount resource. + * + * @schema EcrAuthorizationTokenSpecAuthJwtServiceAccountRef + */ +export interface EcrAuthorizationTokenSpecAuthJwtServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema EcrAuthorizationTokenSpecAuthJwtServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema EcrAuthorizationTokenSpecAuthJwtServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema EcrAuthorizationTokenSpecAuthJwtServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'EcrAuthorizationTokenSpecAuthJwtServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_EcrAuthorizationTokenSpecAuthJwtServiceAccountRef(obj: EcrAuthorizationTokenSpecAuthJwtServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeyID is used for authentication + * + * @schema EcrAuthorizationTokenSpecAuthSecretRefAccessKeyIdSecretRef + */ +export interface EcrAuthorizationTokenSpecAuthSecretRefAccessKeyIdSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema EcrAuthorizationTokenSpecAuthSecretRefAccessKeyIdSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema EcrAuthorizationTokenSpecAuthSecretRefAccessKeyIdSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema EcrAuthorizationTokenSpecAuthSecretRefAccessKeyIdSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'EcrAuthorizationTokenSpecAuthSecretRefAccessKeyIdSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_EcrAuthorizationTokenSpecAuthSecretRefAccessKeyIdSecretRef(obj: EcrAuthorizationTokenSpecAuthSecretRefAccessKeyIdSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema EcrAuthorizationTokenSpecAuthSecretRefSecretAccessKeySecretRef + */ +export interface EcrAuthorizationTokenSpecAuthSecretRefSecretAccessKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema EcrAuthorizationTokenSpecAuthSecretRefSecretAccessKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema EcrAuthorizationTokenSpecAuthSecretRefSecretAccessKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema EcrAuthorizationTokenSpecAuthSecretRefSecretAccessKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'EcrAuthorizationTokenSpecAuthSecretRefSecretAccessKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_EcrAuthorizationTokenSpecAuthSecretRefSecretAccessKeySecretRef(obj: EcrAuthorizationTokenSpecAuthSecretRefSecretAccessKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SessionToken used for authentication + * This must be defined if AccessKeyID and SecretAccessKey are temporary credentials + * see: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html + * + * @schema EcrAuthorizationTokenSpecAuthSecretRefSessionTokenSecretRef + */ +export interface EcrAuthorizationTokenSpecAuthSecretRefSessionTokenSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema EcrAuthorizationTokenSpecAuthSecretRefSessionTokenSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema EcrAuthorizationTokenSpecAuthSecretRefSessionTokenSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema EcrAuthorizationTokenSpecAuthSecretRefSessionTokenSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'EcrAuthorizationTokenSpecAuthSecretRefSessionTokenSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_EcrAuthorizationTokenSpecAuthSecretRefSessionTokenSecretRef(obj: EcrAuthorizationTokenSpecAuthSecretRefSessionTokenSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * Fake generator is used for testing. It lets you define +a static set of credentials that is always returned. + * + * @schema Fake + */ +export class Fake extends ApiObject { + /** + * Returns the apiVersion and kind for "Fake" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'generators.external-secrets.io/v1alpha1', + kind: 'Fake', + } + + /** + * Renders a Kubernetes manifest for "Fake". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: FakeProps = {}): any { + return { + ...Fake.GVK, + ...toJson_FakeProps(props), + }; + } + + /** + * Defines a "Fake" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: FakeProps = {}) { + super(scope, id, { + ...Fake.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...Fake.GVK, + ...toJson_FakeProps(resolved), + }; + } +} + +/** + * Fake generator is used for testing. It lets you define + * a static set of credentials that is always returned. + * + * @schema Fake + */ +export interface FakeProps { + /** + * @schema Fake#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * FakeSpec contains the static data. + * + * @schema Fake#spec + */ + readonly spec?: FakeSpec; + +} + +/** + * Converts an object of type 'FakeProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_FakeProps(obj: FakeProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_FakeSpec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * FakeSpec contains the static data. + * + * @schema FakeSpec + */ +export interface FakeSpec { + /** + * Used to select the correct ESO controller (think: ingress.ingressClassName) + * The ESO controller is instantiated with a specific controller name and filters VDS based on this property + * + * @schema FakeSpec#controller + */ + readonly controller?: string; + + /** + * Data defines the static data returned + * by this generator. + * + * @schema FakeSpec#data + */ + readonly data?: { [key: string]: string }; + +} + +/** + * Converts an object of type 'FakeSpec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_FakeSpec(obj: FakeSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'controller': obj.controller, + 'data': ((obj.data) === undefined) ? undefined : (Object.entries(obj.data).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * GCRAccessToken generates an GCP access token +that can be used to authenticate with GCR. + * + * @schema GCRAccessToken + */ +export class GcrAccessToken extends ApiObject { + /** + * Returns the apiVersion and kind for "GCRAccessToken" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'generators.external-secrets.io/v1alpha1', + kind: 'GCRAccessToken', + } + + /** + * Renders a Kubernetes manifest for "GCRAccessToken". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: GcrAccessTokenProps = {}): any { + return { + ...GcrAccessToken.GVK, + ...toJson_GcrAccessTokenProps(props), + }; + } + + /** + * Defines a "GCRAccessToken" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: GcrAccessTokenProps = {}) { + super(scope, id, { + ...GcrAccessToken.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...GcrAccessToken.GVK, + ...toJson_GcrAccessTokenProps(resolved), + }; + } +} + +/** + * GCRAccessToken generates an GCP access token + * that can be used to authenticate with GCR. + * + * @schema GCRAccessToken + */ +export interface GcrAccessTokenProps { + /** + * @schema GCRAccessToken#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * @schema GCRAccessToken#spec + */ + readonly spec?: GcrAccessTokenSpec; + +} + +/** + * Converts an object of type 'GcrAccessTokenProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_GcrAccessTokenProps(obj: GcrAccessTokenProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_GcrAccessTokenSpec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema GcrAccessTokenSpec + */ +export interface GcrAccessTokenSpec { + /** + * Auth defines the means for authenticating with GCP + * + * @schema GcrAccessTokenSpec#auth + */ + readonly auth: GcrAccessTokenSpecAuth; + + /** + * ProjectID defines which project to use to authenticate with + * + * @schema GcrAccessTokenSpec#projectID + */ + readonly projectId: string; + +} + +/** + * Converts an object of type 'GcrAccessTokenSpec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_GcrAccessTokenSpec(obj: GcrAccessTokenSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_GcrAccessTokenSpecAuth(obj.auth), + 'projectID': obj.projectId, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth defines the means for authenticating with GCP + * + * @schema GcrAccessTokenSpecAuth + */ +export interface GcrAccessTokenSpecAuth { + /** + * @schema GcrAccessTokenSpecAuth#secretRef + */ + readonly secretRef?: GcrAccessTokenSpecAuthSecretRef; + + /** + * @schema GcrAccessTokenSpecAuth#workloadIdentity + */ + readonly workloadIdentity?: GcrAccessTokenSpecAuthWorkloadIdentity; + +} + +/** + * Converts an object of type 'GcrAccessTokenSpecAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_GcrAccessTokenSpecAuth(obj: GcrAccessTokenSpecAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_GcrAccessTokenSpecAuthSecretRef(obj.secretRef), + 'workloadIdentity': toJson_GcrAccessTokenSpecAuthWorkloadIdentity(obj.workloadIdentity), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema GcrAccessTokenSpecAuthSecretRef + */ +export interface GcrAccessTokenSpecAuthSecretRef { + /** + * The SecretAccessKey is used for authentication + * + * @schema GcrAccessTokenSpecAuthSecretRef#secretAccessKeySecretRef + */ + readonly secretAccessKeySecretRef?: GcrAccessTokenSpecAuthSecretRefSecretAccessKeySecretRef; + +} + +/** + * Converts an object of type 'GcrAccessTokenSpecAuthSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_GcrAccessTokenSpecAuthSecretRef(obj: GcrAccessTokenSpecAuthSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretAccessKeySecretRef': toJson_GcrAccessTokenSpecAuthSecretRefSecretAccessKeySecretRef(obj.secretAccessKeySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema GcrAccessTokenSpecAuthWorkloadIdentity + */ +export interface GcrAccessTokenSpecAuthWorkloadIdentity { + /** + * @schema GcrAccessTokenSpecAuthWorkloadIdentity#clusterLocation + */ + readonly clusterLocation: string; + + /** + * @schema GcrAccessTokenSpecAuthWorkloadIdentity#clusterName + */ + readonly clusterName: string; + + /** + * @schema GcrAccessTokenSpecAuthWorkloadIdentity#clusterProjectID + */ + readonly clusterProjectId?: string; + + /** + * A reference to a ServiceAccount resource. + * + * @schema GcrAccessTokenSpecAuthWorkloadIdentity#serviceAccountRef + */ + readonly serviceAccountRef: GcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef; + +} + +/** + * Converts an object of type 'GcrAccessTokenSpecAuthWorkloadIdentity' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_GcrAccessTokenSpecAuthWorkloadIdentity(obj: GcrAccessTokenSpecAuthWorkloadIdentity | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clusterLocation': obj.clusterLocation, + 'clusterName': obj.clusterName, + 'clusterProjectID': obj.clusterProjectId, + 'serviceAccountRef': toJson_GcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema GcrAccessTokenSpecAuthSecretRefSecretAccessKeySecretRef + */ +export interface GcrAccessTokenSpecAuthSecretRefSecretAccessKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema GcrAccessTokenSpecAuthSecretRefSecretAccessKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema GcrAccessTokenSpecAuthSecretRefSecretAccessKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema GcrAccessTokenSpecAuthSecretRefSecretAccessKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'GcrAccessTokenSpecAuthSecretRefSecretAccessKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_GcrAccessTokenSpecAuthSecretRefSecretAccessKeySecretRef(obj: GcrAccessTokenSpecAuthSecretRefSecretAccessKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a ServiceAccount resource. + * + * @schema GcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef + */ +export interface GcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema GcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema GcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema GcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'GcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_GcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef(obj: GcrAccessTokenSpecAuthWorkloadIdentityServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * GithubAccessToken generates ghs_ accessToken + * + * @schema GithubAccessToken + */ +export class GithubAccessToken extends ApiObject { + /** + * Returns the apiVersion and kind for "GithubAccessToken" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'generators.external-secrets.io/v1alpha1', + kind: 'GithubAccessToken', + } + + /** + * Renders a Kubernetes manifest for "GithubAccessToken". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: GithubAccessTokenProps = {}): any { + return { + ...GithubAccessToken.GVK, + ...toJson_GithubAccessTokenProps(props), + }; + } + + /** + * Defines a "GithubAccessToken" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: GithubAccessTokenProps = {}) { + super(scope, id, { + ...GithubAccessToken.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...GithubAccessToken.GVK, + ...toJson_GithubAccessTokenProps(resolved), + }; + } +} + +/** + * GithubAccessToken generates ghs_ accessToken + * + * @schema GithubAccessToken + */ +export interface GithubAccessTokenProps { + /** + * @schema GithubAccessToken#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * @schema GithubAccessToken#spec + */ + readonly spec?: GithubAccessTokenSpec; + +} + +/** + * Converts an object of type 'GithubAccessTokenProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_GithubAccessTokenProps(obj: GithubAccessTokenProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_GithubAccessTokenSpec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema GithubAccessTokenSpec + */ +export interface GithubAccessTokenSpec { + /** + * @schema GithubAccessTokenSpec#appID + */ + readonly appId: string; + + /** + * Auth configures how ESO authenticates with a Github instance. + * + * @schema GithubAccessTokenSpec#auth + */ + readonly auth: GithubAccessTokenSpecAuth; + + /** + * @schema GithubAccessTokenSpec#installID + */ + readonly installId: string; + + /** + * URL configures the Github instance URL. Defaults to https://github.com/. + * + * @default https://github.com/. + * @schema GithubAccessTokenSpec#url + */ + readonly url?: string; + +} + +/** + * Converts an object of type 'GithubAccessTokenSpec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_GithubAccessTokenSpec(obj: GithubAccessTokenSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'appID': obj.appId, + 'auth': toJson_GithubAccessTokenSpecAuth(obj.auth), + 'installID': obj.installId, + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Auth configures how ESO authenticates with a Github instance. + * + * @schema GithubAccessTokenSpecAuth + */ +export interface GithubAccessTokenSpecAuth { + /** + * @schema GithubAccessTokenSpecAuth#privatKey + */ + readonly privatKey: GithubAccessTokenSpecAuthPrivatKey; + +} + +/** + * Converts an object of type 'GithubAccessTokenSpecAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_GithubAccessTokenSpecAuth(obj: GithubAccessTokenSpecAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'privatKey': toJson_GithubAccessTokenSpecAuthPrivatKey(obj.privatKey), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema GithubAccessTokenSpecAuthPrivatKey + */ +export interface GithubAccessTokenSpecAuthPrivatKey { + /** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema GithubAccessTokenSpecAuthPrivatKey#secretRef + */ + readonly secretRef: GithubAccessTokenSpecAuthPrivatKeySecretRef; + +} + +/** + * Converts an object of type 'GithubAccessTokenSpecAuthPrivatKey' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_GithubAccessTokenSpecAuthPrivatKey(obj: GithubAccessTokenSpecAuthPrivatKey | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'secretRef': toJson_GithubAccessTokenSpecAuthPrivatKeySecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a specific 'key' within a Secret resource, + * In some instances, `key` is a required field. + * + * @schema GithubAccessTokenSpecAuthPrivatKeySecretRef + */ +export interface GithubAccessTokenSpecAuthPrivatKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema GithubAccessTokenSpecAuthPrivatKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema GithubAccessTokenSpecAuthPrivatKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema GithubAccessTokenSpecAuthPrivatKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'GithubAccessTokenSpecAuthPrivatKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_GithubAccessTokenSpecAuthPrivatKeySecretRef(obj: GithubAccessTokenSpecAuthPrivatKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * Password generates a random password based on the +configuration parameters in spec. +You can specify the length, characterset and other attributes. + * + * @schema Password + */ +export class Password extends ApiObject { + /** + * Returns the apiVersion and kind for "Password" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'generators.external-secrets.io/v1alpha1', + kind: 'Password', + } + + /** + * Renders a Kubernetes manifest for "Password". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: PasswordProps = {}): any { + return { + ...Password.GVK, + ...toJson_PasswordProps(props), + }; + } + + /** + * Defines a "Password" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: PasswordProps = {}) { + super(scope, id, { + ...Password.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...Password.GVK, + ...toJson_PasswordProps(resolved), + }; + } +} + +/** + * Password generates a random password based on the + * configuration parameters in spec. + * You can specify the length, characterset and other attributes. + * + * @schema Password + */ +export interface PasswordProps { + /** + * @schema Password#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * PasswordSpec controls the behavior of the password generator. + * + * @schema Password#spec + */ + readonly spec?: PasswordSpec; + +} + +/** + * Converts an object of type 'PasswordProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PasswordProps(obj: PasswordProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_PasswordSpec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * PasswordSpec controls the behavior of the password generator. + * + * @schema PasswordSpec + */ +export interface PasswordSpec { + /** + * set AllowRepeat to true to allow repeating characters. + * + * @schema PasswordSpec#allowRepeat + */ + readonly allowRepeat: boolean; + + /** + * Digits specifies the number of digits in the generated + * password. If omitted it defaults to 25% of the length of the password + * + * @schema PasswordSpec#digits + */ + readonly digits?: number; + + /** + * Length of the password to be generated. + * Defaults to 24 + * + * @default 24 + * @schema PasswordSpec#length + */ + readonly length: number; + + /** + * Set NoUpper to disable uppercase characters + * + * @schema PasswordSpec#noUpper + */ + readonly noUpper: boolean; + + /** + * SymbolCharacters specifies the special characters that should be used + * in the generated password. + * + * @schema PasswordSpec#symbolCharacters + */ + readonly symbolCharacters?: string; + + /** + * Symbols specifies the number of symbol characters in the generated + * password. If omitted it defaults to 25% of the length of the password + * + * @schema PasswordSpec#symbols + */ + readonly symbols?: number; + +} + +/** + * Converts an object of type 'PasswordSpec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_PasswordSpec(obj: PasswordSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'allowRepeat': obj.allowRepeat, + 'digits': obj.digits, + 'length': obj.length, + 'noUpper': obj.noUpper, + 'symbolCharacters': obj.symbolCharacters, + 'symbols': obj.symbols, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * + * + * @schema VaultDynamicSecret + */ +export class VaultDynamicSecret extends ApiObject { + /** + * Returns the apiVersion and kind for "VaultDynamicSecret" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'generators.external-secrets.io/v1alpha1', + kind: 'VaultDynamicSecret', + } + + /** + * Renders a Kubernetes manifest for "VaultDynamicSecret". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: VaultDynamicSecretProps = {}): any { + return { + ...VaultDynamicSecret.GVK, + ...toJson_VaultDynamicSecretProps(props), + }; + } + + /** + * Defines a "VaultDynamicSecret" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: VaultDynamicSecretProps = {}) { + super(scope, id, { + ...VaultDynamicSecret.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...VaultDynamicSecret.GVK, + ...toJson_VaultDynamicSecretProps(resolved), + }; + } +} + +/** + * @schema VaultDynamicSecret + */ +export interface VaultDynamicSecretProps { + /** + * @schema VaultDynamicSecret#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * @schema VaultDynamicSecret#spec + */ + readonly spec?: VaultDynamicSecretSpec; + +} + +/** + * Converts an object of type 'VaultDynamicSecretProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretProps(obj: VaultDynamicSecretProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_VaultDynamicSecretSpec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema VaultDynamicSecretSpec + */ +export interface VaultDynamicSecretSpec { + /** + * Used to select the correct ESO controller (think: ingress.ingressClassName) + * The ESO controller is instantiated with a specific controller name and filters VDS based on this property + * + * @schema VaultDynamicSecretSpec#controller + */ + readonly controller?: string; + + /** + * Vault API method to use (GET/POST/other) + * + * @schema VaultDynamicSecretSpec#method + */ + readonly method?: string; + + /** + * Parameters to pass to Vault write (for non-GET methods) + * + * @schema VaultDynamicSecretSpec#parameters + */ + readonly parameters?: any; + + /** + * Vault path to obtain the dynamic secret from + * + * @schema VaultDynamicSecretSpec#path + */ + readonly path: string; + + /** + * Vault provider common spec + * + * @schema VaultDynamicSecretSpec#provider + */ + readonly provider: VaultDynamicSecretSpecProvider; + + /** + * Result type defines which data is returned from the generator. + * By default it is the "data" section of the Vault API response. + * When using e.g. /auth/token/create the "data" section is empty but + * the "auth" section contains the generated token. + * Please refer to the vault docs regarding the result data structure. + * + * @schema VaultDynamicSecretSpec#resultType + */ + readonly resultType?: VaultDynamicSecretSpecResultType; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpec(obj: VaultDynamicSecretSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'controller': obj.controller, + 'method': obj.method, + 'parameters': obj.parameters, + 'path': obj.path, + 'provider': toJson_VaultDynamicSecretSpecProvider(obj.provider), + 'resultType': obj.resultType, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Vault provider common spec + * + * @schema VaultDynamicSecretSpecProvider + */ +export interface VaultDynamicSecretSpecProvider { + /** + * Auth configures how secret-manager authenticates with the Vault server. + * + * @schema VaultDynamicSecretSpecProvider#auth + */ + readonly auth: VaultDynamicSecretSpecProviderAuth; + + /** + * PEM encoded CA bundle used to validate Vault server certificate. Only used + * if the Server URL is using HTTPS protocol. This parameter is ignored for + * plain HTTP protocol connection. If not set the system root certificates + * are used to validate the TLS connection. + * + * @schema VaultDynamicSecretSpecProvider#caBundle + */ + readonly caBundle?: string; + + /** + * The provider for the CA bundle to use to validate Vault server certificate. + * + * @schema VaultDynamicSecretSpecProvider#caProvider + */ + readonly caProvider?: VaultDynamicSecretSpecProviderCaProvider; + + /** + * ForwardInconsistent tells Vault to forward read-after-write requests to the Vault + * leader instead of simply retrying within a loop. This can increase performance if + * the option is enabled serverside. + * https://www.vaultproject.io/docs/configuration/replication#allow_forwarding_via_header + * + * @schema VaultDynamicSecretSpecProvider#forwardInconsistent + */ + readonly forwardInconsistent?: boolean; + + /** + * Name of the vault namespace. Namespaces is a set of features within Vault Enterprise that allows + * Vault environments to support Secure Multi-tenancy. e.g: "ns1". + * More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces + * + * @schema VaultDynamicSecretSpecProvider#namespace + */ + readonly namespace?: string; + + /** + * Path is the mount path of the Vault KV backend endpoint, e.g: + * "secret". The v2 KV secret engine version specific "/data" path suffix + * for fetching secrets from Vault is optional and will be appended + * if not present in specified path. + * + * @schema VaultDynamicSecretSpecProvider#path + */ + readonly path?: string; + + /** + * ReadYourWrites ensures isolated read-after-write semantics by + * providing discovered cluster replication states in each request. + * More information about eventual consistency in Vault can be found here + * https://www.vaultproject.io/docs/enterprise/consistency + * + * @schema VaultDynamicSecretSpecProvider#readYourWrites + */ + readonly readYourWrites?: boolean; + + /** + * Server is the connection address for the Vault server, e.g: "https://vault.example.com:8200". + * + * @schema VaultDynamicSecretSpecProvider#server + */ + readonly server: string; + + /** + * The configuration used for client side related TLS communication, when the Vault server + * requires mutual authentication. Only used if the Server URL is using HTTPS protocol. + * This parameter is ignored for plain HTTP protocol connection. + * It's worth noting this configuration is different from the "TLS certificates auth method", + * which is available under the `auth.cert` section. + * + * @schema VaultDynamicSecretSpecProvider#tls + */ + readonly tls?: VaultDynamicSecretSpecProviderTls; + + /** + * Version is the Vault KV secret engine version. This can be either "v1" or + * "v2". Version defaults to "v2". + * + * @schema VaultDynamicSecretSpecProvider#version + */ + readonly version?: VaultDynamicSecretSpecProviderVersion; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProvider(obj: VaultDynamicSecretSpecProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auth': toJson_VaultDynamicSecretSpecProviderAuth(obj.auth), + 'caBundle': obj.caBundle, + 'caProvider': toJson_VaultDynamicSecretSpecProviderCaProvider(obj.caProvider), + 'forwardInconsistent': obj.forwardInconsistent, + 'namespace': obj.namespace, + 'path': obj.path, + 'readYourWrites': obj.readYourWrites, + 'server': obj.server, + 'tls': toJson_VaultDynamicSecretSpecProviderTls(obj.tls), + 'version': obj.version, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Result type defines which data is returned from the generator. + * By default it is the "data" section of the Vault API response. + * When using e.g. /auth/token/create the "data" section is empty but + * the "auth" section contains the generated token. + * Please refer to the vault docs regarding the result data structure. + * + * @schema VaultDynamicSecretSpecResultType + */ +export enum VaultDynamicSecretSpecResultType { + /** Data */ + DATA = "Data", + /** Auth */ + AUTH = "Auth", +} + +/** + * Auth configures how secret-manager authenticates with the Vault server. + * + * @schema VaultDynamicSecretSpecProviderAuth + */ +export interface VaultDynamicSecretSpecProviderAuth { + /** + * AppRole authenticates with Vault using the App Role auth mechanism, + * with the role and secret stored in a Kubernetes Secret resource. + * + * @schema VaultDynamicSecretSpecProviderAuth#appRole + */ + readonly appRole?: VaultDynamicSecretSpecProviderAuthAppRole; + + /** + * Cert authenticates with TLS Certificates by passing client certificate, private key and ca certificate + * Cert authentication method + * + * @schema VaultDynamicSecretSpecProviderAuth#cert + */ + readonly cert?: VaultDynamicSecretSpecProviderAuthCert; + + /** + * Iam authenticates with vault by passing a special AWS request signed with AWS IAM credentials + * AWS IAM authentication method + * + * @schema VaultDynamicSecretSpecProviderAuth#iam + */ + readonly iam?: VaultDynamicSecretSpecProviderAuthIam; + + /** + * Jwt authenticates with Vault by passing role and JWT token using the + * JWT/OIDC authentication method + * + * @schema VaultDynamicSecretSpecProviderAuth#jwt + */ + readonly jwt?: VaultDynamicSecretSpecProviderAuthJwt; + + /** + * Kubernetes authenticates with Vault by passing the ServiceAccount + * token stored in the named Secret resource to the Vault server. + * + * @schema VaultDynamicSecretSpecProviderAuth#kubernetes + */ + readonly kubernetes?: VaultDynamicSecretSpecProviderAuthKubernetes; + + /** + * Ldap authenticates with Vault by passing username/password pair using + * the LDAP authentication method + * + * @schema VaultDynamicSecretSpecProviderAuth#ldap + */ + readonly ldap?: VaultDynamicSecretSpecProviderAuthLdap; + + /** + * Name of the vault namespace to authenticate to. This can be different than the namespace your secret is in. + * Namespaces is a set of features within Vault Enterprise that allows + * Vault environments to support Secure Multi-tenancy. e.g: "ns1". + * More about namespaces can be found here https://www.vaultproject.io/docs/enterprise/namespaces + * This will default to Vault.Namespace field if set, or empty otherwise + * + * @schema VaultDynamicSecretSpecProviderAuth#namespace + */ + readonly namespace?: string; + + /** + * TokenSecretRef authenticates with Vault by presenting a token. + * + * @schema VaultDynamicSecretSpecProviderAuth#tokenSecretRef + */ + readonly tokenSecretRef?: VaultDynamicSecretSpecProviderAuthTokenSecretRef; + + /** + * UserPass authenticates with Vault by passing username/password pair + * + * @schema VaultDynamicSecretSpecProviderAuth#userPass + */ + readonly userPass?: VaultDynamicSecretSpecProviderAuthUserPass; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuth' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuth(obj: VaultDynamicSecretSpecProviderAuth | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'appRole': toJson_VaultDynamicSecretSpecProviderAuthAppRole(obj.appRole), + 'cert': toJson_VaultDynamicSecretSpecProviderAuthCert(obj.cert), + 'iam': toJson_VaultDynamicSecretSpecProviderAuthIam(obj.iam), + 'jwt': toJson_VaultDynamicSecretSpecProviderAuthJwt(obj.jwt), + 'kubernetes': toJson_VaultDynamicSecretSpecProviderAuthKubernetes(obj.kubernetes), + 'ldap': toJson_VaultDynamicSecretSpecProviderAuthLdap(obj.ldap), + 'namespace': obj.namespace, + 'tokenSecretRef': toJson_VaultDynamicSecretSpecProviderAuthTokenSecretRef(obj.tokenSecretRef), + 'userPass': toJson_VaultDynamicSecretSpecProviderAuthUserPass(obj.userPass), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate Vault server certificate. + * + * @schema VaultDynamicSecretSpecProviderCaProvider + */ +export interface VaultDynamicSecretSpecProviderCaProvider { + /** + * The key where the CA certificate can be found in the Secret or ConfigMap. + * + * @schema VaultDynamicSecretSpecProviderCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema VaultDynamicSecretSpecProviderCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * Can only be defined when used in a ClusterSecretStore. + * + * @schema VaultDynamicSecretSpecProviderCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema VaultDynamicSecretSpecProviderCaProvider#type + */ + readonly type: VaultDynamicSecretSpecProviderCaProviderType; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderCaProvider(obj: VaultDynamicSecretSpecProviderCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The configuration used for client side related TLS communication, when the Vault server + * requires mutual authentication. Only used if the Server URL is using HTTPS protocol. + * This parameter is ignored for plain HTTP protocol connection. + * It's worth noting this configuration is different from the "TLS certificates auth method", + * which is available under the `auth.cert` section. + * + * @schema VaultDynamicSecretSpecProviderTls + */ +export interface VaultDynamicSecretSpecProviderTls { + /** + * CertSecretRef is a certificate added to the transport layer + * when communicating with the Vault server. + * If no key for the Secret is specified, external-secret will default to 'tls.crt'. + * + * @schema VaultDynamicSecretSpecProviderTls#certSecretRef + */ + readonly certSecretRef?: VaultDynamicSecretSpecProviderTlsCertSecretRef; + + /** + * KeySecretRef to a key in a Secret resource containing client private key + * added to the transport layer when communicating with the Vault server. + * If no key for the Secret is specified, external-secret will default to 'tls.key'. + * + * @schema VaultDynamicSecretSpecProviderTls#keySecretRef + */ + readonly keySecretRef?: VaultDynamicSecretSpecProviderTlsKeySecretRef; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderTls' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderTls(obj: VaultDynamicSecretSpecProviderTls | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'certSecretRef': toJson_VaultDynamicSecretSpecProviderTlsCertSecretRef(obj.certSecretRef), + 'keySecretRef': toJson_VaultDynamicSecretSpecProviderTlsKeySecretRef(obj.keySecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Version is the Vault KV secret engine version. This can be either "v1" or + * "v2". Version defaults to "v2". + * + * @schema VaultDynamicSecretSpecProviderVersion + */ +export enum VaultDynamicSecretSpecProviderVersion { + /** v1 */ + V1 = "v1", + /** v2 */ + V2 = "v2", +} + +/** + * AppRole authenticates with Vault using the App Role auth mechanism, + * with the role and secret stored in a Kubernetes Secret resource. + * + * @schema VaultDynamicSecretSpecProviderAuthAppRole + */ +export interface VaultDynamicSecretSpecProviderAuthAppRole { + /** + * Path where the App Role authentication backend is mounted + * in Vault, e.g: "approle" + * + * @schema VaultDynamicSecretSpecProviderAuthAppRole#path + */ + readonly path: string; + + /** + * RoleID configured in the App Role authentication backend when setting + * up the authentication backend in Vault. + * + * @schema VaultDynamicSecretSpecProviderAuthAppRole#roleId + */ + readonly roleId?: string; + + /** + * Reference to a key in a Secret that contains the App Role ID used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role id. + * + * @schema VaultDynamicSecretSpecProviderAuthAppRole#roleRef + */ + readonly roleRef?: VaultDynamicSecretSpecProviderAuthAppRoleRoleRef; + + /** + * Reference to a key in a Secret that contains the App Role secret used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role secret. + * + * @schema VaultDynamicSecretSpecProviderAuthAppRole#secretRef + */ + readonly secretRef: VaultDynamicSecretSpecProviderAuthAppRoleSecretRef; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthAppRole' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthAppRole(obj: VaultDynamicSecretSpecProviderAuthAppRole | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'path': obj.path, + 'roleId': obj.roleId, + 'roleRef': toJson_VaultDynamicSecretSpecProviderAuthAppRoleRoleRef(obj.roleRef), + 'secretRef': toJson_VaultDynamicSecretSpecProviderAuthAppRoleSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Cert authenticates with TLS Certificates by passing client certificate, private key and ca certificate + * Cert authentication method + * + * @schema VaultDynamicSecretSpecProviderAuthCert + */ +export interface VaultDynamicSecretSpecProviderAuthCert { + /** + * ClientCert is a certificate to authenticate using the Cert Vault + * authentication method + * + * @schema VaultDynamicSecretSpecProviderAuthCert#clientCert + */ + readonly clientCert?: VaultDynamicSecretSpecProviderAuthCertClientCert; + + /** + * SecretRef to a key in a Secret resource containing client private key to + * authenticate with Vault using the Cert authentication method + * + * @schema VaultDynamicSecretSpecProviderAuthCert#secretRef + */ + readonly secretRef?: VaultDynamicSecretSpecProviderAuthCertSecretRef; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthCert(obj: VaultDynamicSecretSpecProviderAuthCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'clientCert': toJson_VaultDynamicSecretSpecProviderAuthCertClientCert(obj.clientCert), + 'secretRef': toJson_VaultDynamicSecretSpecProviderAuthCertSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Iam authenticates with vault by passing a special AWS request signed with AWS IAM credentials + * AWS IAM authentication method + * + * @schema VaultDynamicSecretSpecProviderAuthIam + */ +export interface VaultDynamicSecretSpecProviderAuthIam { + /** + * AWS External ID set on assumed IAM roles + * + * @schema VaultDynamicSecretSpecProviderAuthIam#externalID + */ + readonly externalId?: string; + + /** + * Specify a service account with IRSA enabled + * + * @schema VaultDynamicSecretSpecProviderAuthIam#jwt + */ + readonly jwt?: VaultDynamicSecretSpecProviderAuthIamJwt; + + /** + * Path where the AWS auth method is enabled in Vault, e.g: "aws" + * + * @schema VaultDynamicSecretSpecProviderAuthIam#path + */ + readonly path?: string; + + /** + * AWS region + * + * @schema VaultDynamicSecretSpecProviderAuthIam#region + */ + readonly region?: string; + + /** + * This is the AWS role to be assumed before talking to vault + * + * @schema VaultDynamicSecretSpecProviderAuthIam#role + */ + readonly role?: string; + + /** + * Specify credentials in a Secret object + * + * @schema VaultDynamicSecretSpecProviderAuthIam#secretRef + */ + readonly secretRef?: VaultDynamicSecretSpecProviderAuthIamSecretRef; + + /** + * X-Vault-AWS-IAM-Server-ID is an additional header used by Vault IAM auth method to mitigate against different types of replay attacks. More details here: https://developer.hashicorp.com/vault/docs/auth/aws + * + * @schema VaultDynamicSecretSpecProviderAuthIam#vaultAwsIamServerID + */ + readonly vaultAwsIamServerId?: string; + + /** + * Vault Role. In vault, a role describes an identity with a set of permissions, groups, or policies you want to attach a user of the secrets engine + * + * @schema VaultDynamicSecretSpecProviderAuthIam#vaultRole + */ + readonly vaultRole: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthIam' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthIam(obj: VaultDynamicSecretSpecProviderAuthIam | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'externalID': obj.externalId, + 'jwt': toJson_VaultDynamicSecretSpecProviderAuthIamJwt(obj.jwt), + 'path': obj.path, + 'region': obj.region, + 'role': obj.role, + 'secretRef': toJson_VaultDynamicSecretSpecProviderAuthIamSecretRef(obj.secretRef), + 'vaultAwsIamServerID': obj.vaultAwsIamServerId, + 'vaultRole': obj.vaultRole, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Jwt authenticates with Vault by passing role and JWT token using the + * JWT/OIDC authentication method + * + * @schema VaultDynamicSecretSpecProviderAuthJwt + */ +export interface VaultDynamicSecretSpecProviderAuthJwt { + /** + * Optional ServiceAccountToken specifies the Kubernetes service account for which to request + * a token for with the `TokenRequest` API. + * + * @schema VaultDynamicSecretSpecProviderAuthJwt#kubernetesServiceAccountToken + */ + readonly kubernetesServiceAccountToken?: VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountToken; + + /** + * Path where the JWT authentication backend is mounted + * in Vault, e.g: "jwt" + * + * @schema VaultDynamicSecretSpecProviderAuthJwt#path + */ + readonly path: string; + + /** + * Role is a JWT role to authenticate using the JWT/OIDC Vault + * authentication method + * + * @schema VaultDynamicSecretSpecProviderAuthJwt#role + */ + readonly role?: string; + + /** + * Optional SecretRef that refers to a key in a Secret resource containing JWT token to + * authenticate with Vault using the JWT/OIDC authentication method. + * + * @schema VaultDynamicSecretSpecProviderAuthJwt#secretRef + */ + readonly secretRef?: VaultDynamicSecretSpecProviderAuthJwtSecretRef; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthJwt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthJwt(obj: VaultDynamicSecretSpecProviderAuthJwt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'kubernetesServiceAccountToken': toJson_VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountToken(obj.kubernetesServiceAccountToken), + 'path': obj.path, + 'role': obj.role, + 'secretRef': toJson_VaultDynamicSecretSpecProviderAuthJwtSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Kubernetes authenticates with Vault by passing the ServiceAccount + * token stored in the named Secret resource to the Vault server. + * + * @schema VaultDynamicSecretSpecProviderAuthKubernetes + */ +export interface VaultDynamicSecretSpecProviderAuthKubernetes { + /** + * Path where the Kubernetes authentication backend is mounted in Vault, e.g: + * "kubernetes" + * + * @schema VaultDynamicSecretSpecProviderAuthKubernetes#mountPath + */ + readonly mountPath: string; + + /** + * A required field containing the Vault Role to assume. A Role binds a + * Kubernetes ServiceAccount with a set of Vault policies. + * + * @schema VaultDynamicSecretSpecProviderAuthKubernetes#role + */ + readonly role: string; + + /** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Vault. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema VaultDynamicSecretSpecProviderAuthKubernetes#secretRef + */ + readonly secretRef?: VaultDynamicSecretSpecProviderAuthKubernetesSecretRef; + + /** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Vault. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema VaultDynamicSecretSpecProviderAuthKubernetes#serviceAccountRef + */ + readonly serviceAccountRef?: VaultDynamicSecretSpecProviderAuthKubernetesServiceAccountRef; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthKubernetes' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthKubernetes(obj: VaultDynamicSecretSpecProviderAuthKubernetes | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'mountPath': obj.mountPath, + 'role': obj.role, + 'secretRef': toJson_VaultDynamicSecretSpecProviderAuthKubernetesSecretRef(obj.secretRef), + 'serviceAccountRef': toJson_VaultDynamicSecretSpecProviderAuthKubernetesServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Ldap authenticates with Vault by passing username/password pair using + * the LDAP authentication method + * + * @schema VaultDynamicSecretSpecProviderAuthLdap + */ +export interface VaultDynamicSecretSpecProviderAuthLdap { + /** + * Path where the LDAP authentication backend is mounted + * in Vault, e.g: "ldap" + * + * @schema VaultDynamicSecretSpecProviderAuthLdap#path + */ + readonly path: string; + + /** + * SecretRef to a key in a Secret resource containing password for the LDAP + * user used to authenticate with Vault using the LDAP authentication + * method + * + * @schema VaultDynamicSecretSpecProviderAuthLdap#secretRef + */ + readonly secretRef?: VaultDynamicSecretSpecProviderAuthLdapSecretRef; + + /** + * Username is a LDAP user name used to authenticate using the LDAP Vault + * authentication method + * + * @schema VaultDynamicSecretSpecProviderAuthLdap#username + */ + readonly username: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthLdap' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthLdap(obj: VaultDynamicSecretSpecProviderAuthLdap | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'path': obj.path, + 'secretRef': toJson_VaultDynamicSecretSpecProviderAuthLdapSecretRef(obj.secretRef), + 'username': obj.username, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * TokenSecretRef authenticates with Vault by presenting a token. + * + * @schema VaultDynamicSecretSpecProviderAuthTokenSecretRef + */ +export interface VaultDynamicSecretSpecProviderAuthTokenSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema VaultDynamicSecretSpecProviderAuthTokenSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderAuthTokenSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderAuthTokenSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthTokenSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthTokenSecretRef(obj: VaultDynamicSecretSpecProviderAuthTokenSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * UserPass authenticates with Vault by passing username/password pair + * + * @schema VaultDynamicSecretSpecProviderAuthUserPass + */ +export interface VaultDynamicSecretSpecProviderAuthUserPass { + /** + * Path where the UserPassword authentication backend is mounted + * in Vault, e.g: "user" + * + * @schema VaultDynamicSecretSpecProviderAuthUserPass#path + */ + readonly path: string; + + /** + * SecretRef to a key in a Secret resource containing password for the + * user used to authenticate with Vault using the UserPass authentication + * method + * + * @schema VaultDynamicSecretSpecProviderAuthUserPass#secretRef + */ + readonly secretRef?: VaultDynamicSecretSpecProviderAuthUserPassSecretRef; + + /** + * Username is a user name used to authenticate using the UserPass Vault + * authentication method + * + * @schema VaultDynamicSecretSpecProviderAuthUserPass#username + */ + readonly username: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthUserPass' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthUserPass(obj: VaultDynamicSecretSpecProviderAuthUserPass | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'path': obj.path, + 'secretRef': toJson_VaultDynamicSecretSpecProviderAuthUserPassSecretRef(obj.secretRef), + 'username': obj.username, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema VaultDynamicSecretSpecProviderCaProviderType + */ +export enum VaultDynamicSecretSpecProviderCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * CertSecretRef is a certificate added to the transport layer + * when communicating with the Vault server. + * If no key for the Secret is specified, external-secret will default to 'tls.crt'. + * + * @schema VaultDynamicSecretSpecProviderTlsCertSecretRef + */ +export interface VaultDynamicSecretSpecProviderTlsCertSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema VaultDynamicSecretSpecProviderTlsCertSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderTlsCertSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderTlsCertSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderTlsCertSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderTlsCertSecretRef(obj: VaultDynamicSecretSpecProviderTlsCertSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * KeySecretRef to a key in a Secret resource containing client private key + * added to the transport layer when communicating with the Vault server. + * If no key for the Secret is specified, external-secret will default to 'tls.key'. + * + * @schema VaultDynamicSecretSpecProviderTlsKeySecretRef + */ +export interface VaultDynamicSecretSpecProviderTlsKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema VaultDynamicSecretSpecProviderTlsKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderTlsKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderTlsKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderTlsKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderTlsKeySecretRef(obj: VaultDynamicSecretSpecProviderTlsKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Reference to a key in a Secret that contains the App Role ID used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role id. + * + * @schema VaultDynamicSecretSpecProviderAuthAppRoleRoleRef + */ +export interface VaultDynamicSecretSpecProviderAuthAppRoleRoleRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema VaultDynamicSecretSpecProviderAuthAppRoleRoleRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderAuthAppRoleRoleRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderAuthAppRoleRoleRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthAppRoleRoleRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthAppRoleRoleRef(obj: VaultDynamicSecretSpecProviderAuthAppRoleRoleRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Reference to a key in a Secret that contains the App Role secret used + * to authenticate with Vault. + * The `key` field must be specified and denotes which entry within the Secret + * resource is used as the app role secret. + * + * @schema VaultDynamicSecretSpecProviderAuthAppRoleSecretRef + */ +export interface VaultDynamicSecretSpecProviderAuthAppRoleSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema VaultDynamicSecretSpecProviderAuthAppRoleSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderAuthAppRoleSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderAuthAppRoleSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthAppRoleSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthAppRoleSecretRef(obj: VaultDynamicSecretSpecProviderAuthAppRoleSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ClientCert is a certificate to authenticate using the Cert Vault + * authentication method + * + * @schema VaultDynamicSecretSpecProviderAuthCertClientCert + */ +export interface VaultDynamicSecretSpecProviderAuthCertClientCert { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema VaultDynamicSecretSpecProviderAuthCertClientCert#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderAuthCertClientCert#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderAuthCertClientCert#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthCertClientCert' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthCertClientCert(obj: VaultDynamicSecretSpecProviderAuthCertClientCert | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to a key in a Secret resource containing client private key to + * authenticate with Vault using the Cert authentication method + * + * @schema VaultDynamicSecretSpecProviderAuthCertSecretRef + */ +export interface VaultDynamicSecretSpecProviderAuthCertSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema VaultDynamicSecretSpecProviderAuthCertSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderAuthCertSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderAuthCertSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthCertSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthCertSecretRef(obj: VaultDynamicSecretSpecProviderAuthCertSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Specify a service account with IRSA enabled + * + * @schema VaultDynamicSecretSpecProviderAuthIamJwt + */ +export interface VaultDynamicSecretSpecProviderAuthIamJwt { + /** + * A reference to a ServiceAccount resource. + * + * @schema VaultDynamicSecretSpecProviderAuthIamJwt#serviceAccountRef + */ + readonly serviceAccountRef?: VaultDynamicSecretSpecProviderAuthIamJwtServiceAccountRef; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthIamJwt' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthIamJwt(obj: VaultDynamicSecretSpecProviderAuthIamJwt | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'serviceAccountRef': toJson_VaultDynamicSecretSpecProviderAuthIamJwtServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Specify credentials in a Secret object + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRef + */ +export interface VaultDynamicSecretSpecProviderAuthIamSecretRef { + /** + * The AccessKeyID is used for authentication + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRef#accessKeyIDSecretRef + */ + readonly accessKeyIdSecretRef?: VaultDynamicSecretSpecProviderAuthIamSecretRefAccessKeyIdSecretRef; + + /** + * The SecretAccessKey is used for authentication + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRef#secretAccessKeySecretRef + */ + readonly secretAccessKeySecretRef?: VaultDynamicSecretSpecProviderAuthIamSecretRefSecretAccessKeySecretRef; + + /** + * The SessionToken used for authentication + * This must be defined if AccessKeyID and SecretAccessKey are temporary credentials + * see: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRef#sessionTokenSecretRef + */ + readonly sessionTokenSecretRef?: VaultDynamicSecretSpecProviderAuthIamSecretRefSessionTokenSecretRef; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthIamSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthIamSecretRef(obj: VaultDynamicSecretSpecProviderAuthIamSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessKeyIDSecretRef': toJson_VaultDynamicSecretSpecProviderAuthIamSecretRefAccessKeyIdSecretRef(obj.accessKeyIdSecretRef), + 'secretAccessKeySecretRef': toJson_VaultDynamicSecretSpecProviderAuthIamSecretRefSecretAccessKeySecretRef(obj.secretAccessKeySecretRef), + 'sessionTokenSecretRef': toJson_VaultDynamicSecretSpecProviderAuthIamSecretRefSessionTokenSecretRef(obj.sessionTokenSecretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional ServiceAccountToken specifies the Kubernetes service account for which to request + * a token for with the `TokenRequest` API. + * + * @schema VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountToken + */ +export interface VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountToken { + /** + * Optional audiences field that will be used to request a temporary Kubernetes service + * account token for the service account referenced by `serviceAccountRef`. + * Defaults to a single audience `vault` it not specified. + * Deprecated: use serviceAccountRef.Audiences instead + * + * @default a single audience `vault` it not specified. + * @schema VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountToken#audiences + */ + readonly audiences?: string[]; + + /** + * Optional expiration time in seconds that will be used to request a temporary + * Kubernetes service account token for the service account referenced by + * `serviceAccountRef`. + * Deprecated: this will be removed in the future. + * Defaults to 10 minutes. + * + * @default 10 minutes. + * @schema VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountToken#expirationSeconds + */ + readonly expirationSeconds?: number; + + /** + * Service account field containing the name of a kubernetes ServiceAccount. + * + * @schema VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountToken#serviceAccountRef + */ + readonly serviceAccountRef: VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountTokenServiceAccountRef; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountToken' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountToken(obj: VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountToken | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'expirationSeconds': obj.expirationSeconds, + 'serviceAccountRef': toJson_VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountTokenServiceAccountRef(obj.serviceAccountRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional SecretRef that refers to a key in a Secret resource containing JWT token to + * authenticate with Vault using the JWT/OIDC authentication method. + * + * @schema VaultDynamicSecretSpecProviderAuthJwtSecretRef + */ +export interface VaultDynamicSecretSpecProviderAuthJwtSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema VaultDynamicSecretSpecProviderAuthJwtSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderAuthJwtSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderAuthJwtSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthJwtSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthJwtSecretRef(obj: VaultDynamicSecretSpecProviderAuthJwtSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional secret field containing a Kubernetes ServiceAccount JWT used + * for authenticating with Vault. If a name is specified without a key, + * `token` is the default. If one is not specified, the one bound to + * the controller will be used. + * + * @schema VaultDynamicSecretSpecProviderAuthKubernetesSecretRef + */ +export interface VaultDynamicSecretSpecProviderAuthKubernetesSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema VaultDynamicSecretSpecProviderAuthKubernetesSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderAuthKubernetesSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderAuthKubernetesSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthKubernetesSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthKubernetesSecretRef(obj: VaultDynamicSecretSpecProviderAuthKubernetesSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Optional service account field containing the name of a kubernetes ServiceAccount. + * If the service account is specified, the service account secret token JWT will be used + * for authenticating with Vault. If the service account selector is not supplied, + * the secretRef will be used instead. + * + * @schema VaultDynamicSecretSpecProviderAuthKubernetesServiceAccountRef + */ +export interface VaultDynamicSecretSpecProviderAuthKubernetesServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema VaultDynamicSecretSpecProviderAuthKubernetesServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderAuthKubernetesServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderAuthKubernetesServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthKubernetesServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthKubernetesServiceAccountRef(obj: VaultDynamicSecretSpecProviderAuthKubernetesServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to a key in a Secret resource containing password for the LDAP + * user used to authenticate with Vault using the LDAP authentication + * method + * + * @schema VaultDynamicSecretSpecProviderAuthLdapSecretRef + */ +export interface VaultDynamicSecretSpecProviderAuthLdapSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema VaultDynamicSecretSpecProviderAuthLdapSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderAuthLdapSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderAuthLdapSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthLdapSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthLdapSecretRef(obj: VaultDynamicSecretSpecProviderAuthLdapSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SecretRef to a key in a Secret resource containing password for the + * user used to authenticate with Vault using the UserPass authentication + * method + * + * @schema VaultDynamicSecretSpecProviderAuthUserPassSecretRef + */ +export interface VaultDynamicSecretSpecProviderAuthUserPassSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema VaultDynamicSecretSpecProviderAuthUserPassSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderAuthUserPassSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderAuthUserPassSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthUserPassSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthUserPassSecretRef(obj: VaultDynamicSecretSpecProviderAuthUserPassSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * A reference to a ServiceAccount resource. + * + * @schema VaultDynamicSecretSpecProviderAuthIamJwtServiceAccountRef + */ +export interface VaultDynamicSecretSpecProviderAuthIamJwtServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema VaultDynamicSecretSpecProviderAuthIamJwtServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderAuthIamJwtServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderAuthIamJwtServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthIamJwtServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthIamJwtServiceAccountRef(obj: VaultDynamicSecretSpecProviderAuthIamJwtServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The AccessKeyID is used for authentication + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRefAccessKeyIdSecretRef + */ +export interface VaultDynamicSecretSpecProviderAuthIamSecretRefAccessKeyIdSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRefAccessKeyIdSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRefAccessKeyIdSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRefAccessKeyIdSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthIamSecretRefAccessKeyIdSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthIamSecretRefAccessKeyIdSecretRef(obj: VaultDynamicSecretSpecProviderAuthIamSecretRefAccessKeyIdSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SecretAccessKey is used for authentication + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRefSecretAccessKeySecretRef + */ +export interface VaultDynamicSecretSpecProviderAuthIamSecretRefSecretAccessKeySecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRefSecretAccessKeySecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRefSecretAccessKeySecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRefSecretAccessKeySecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthIamSecretRefSecretAccessKeySecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthIamSecretRefSecretAccessKeySecretRef(obj: VaultDynamicSecretSpecProviderAuthIamSecretRefSecretAccessKeySecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The SessionToken used for authentication + * This must be defined if AccessKeyID and SecretAccessKey are temporary credentials + * see: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRefSessionTokenSecretRef + */ +export interface VaultDynamicSecretSpecProviderAuthIamSecretRefSessionTokenSecretRef { + /** + * The key of the entry in the Secret resource's `data` field to be used. Some instances of this field may be + * defaulted, in others it may be required. + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRefSessionTokenSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRefSessionTokenSecretRef#name + */ + readonly name?: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderAuthIamSecretRefSessionTokenSecretRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthIamSecretRefSessionTokenSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthIamSecretRefSessionTokenSecretRef(obj: VaultDynamicSecretSpecProviderAuthIamSecretRefSessionTokenSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Service account field containing the name of a kubernetes ServiceAccount. + * + * @schema VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountTokenServiceAccountRef + */ +export interface VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountTokenServiceAccountRef { + /** + * Audience specifies the `aud` claim for the service account token + * If the service account uses a well-known annotation for e.g. IRSA or GCP Workload Identity + * then this audiences will be appended to the list + * + * @schema VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountTokenServiceAccountRef#audiences + */ + readonly audiences?: string[]; + + /** + * The name of the ServiceAccount resource being referred to. + * + * @schema VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountTokenServiceAccountRef#name + */ + readonly name: string; + + /** + * Namespace of the resource being referred to. Ignored if referent is not cluster-scoped. cluster-scoped defaults + * to the namespace of the referent. + * + * @schema VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountTokenServiceAccountRef#namespace + */ + readonly namespace?: string; + +} + +/** + * Converts an object of type 'VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountTokenServiceAccountRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountTokenServiceAccountRef(obj: VaultDynamicSecretSpecProviderAuthJwtKubernetesServiceAccountTokenServiceAccountRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'audiences': obj.audiences?.map(y => y), + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + + +/** + * Webhook connects to a third party API server to handle the secrets generation +configuration parameters in spec. +You can specify the server, the token, and additional body parameters. +See documentation for the full API specification for requests and responses. + * + * @schema Webhook + */ +export class Webhook extends ApiObject { + /** + * Returns the apiVersion and kind for "Webhook" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'generators.external-secrets.io/v1alpha1', + kind: 'Webhook', + } + + /** + * Renders a Kubernetes manifest for "Webhook". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: WebhookProps = {}): any { + return { + ...Webhook.GVK, + ...toJson_WebhookProps(props), + }; + } + + /** + * Defines a "Webhook" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: WebhookProps = {}) { + super(scope, id, { + ...Webhook.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...Webhook.GVK, + ...toJson_WebhookProps(resolved), + }; + } +} + +/** + * Webhook connects to a third party API server to handle the secrets generation + * configuration parameters in spec. + * You can specify the server, the token, and additional body parameters. + * See documentation for the full API specification for requests and responses. + * + * @schema Webhook + */ +export interface WebhookProps { + /** + * @schema Webhook#metadata + */ + readonly metadata?: ApiObjectMetadata; + + /** + * WebhookSpec controls the behavior of the external generator. Any body parameters should be passed to the server through the parameters field. + * + * @schema Webhook#spec + */ + readonly spec?: WebhookSpec; + +} + +/** + * Converts an object of type 'WebhookProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_WebhookProps(obj: WebhookProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': obj.metadata, + 'spec': toJson_WebhookSpec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * WebhookSpec controls the behavior of the external generator. Any body parameters should be passed to the server through the parameters field. + * + * @schema WebhookSpec + */ +export interface WebhookSpec { + /** + * Body + * + * @schema WebhookSpec#body + */ + readonly body?: string; + + /** + * PEM encoded CA bundle used to validate webhook server certificate. Only used + * if the Server URL is using HTTPS protocol. This parameter is ignored for + * plain HTTP protocol connection. If not set the system root certificates + * are used to validate the TLS connection. + * + * @schema WebhookSpec#caBundle + */ + readonly caBundle?: string; + + /** + * The provider for the CA bundle to use to validate webhook server certificate. + * + * @schema WebhookSpec#caProvider + */ + readonly caProvider?: WebhookSpecCaProvider; + + /** + * Headers + * + * @schema WebhookSpec#headers + */ + readonly headers?: { [key: string]: string }; + + /** + * Webhook Method + * + * @schema WebhookSpec#method + */ + readonly method?: string; + + /** + * Result formatting + * + * @schema WebhookSpec#result + */ + readonly result: WebhookSpecResult; + + /** + * Secrets to fill in templates + * These secrets will be passed to the templating function as key value pairs under the given name + * + * @schema WebhookSpec#secrets + */ + readonly secrets?: WebhookSpecSecrets[]; + + /** + * Timeout + * + * @schema WebhookSpec#timeout + */ + readonly timeout?: string; + + /** + * Webhook url to call + * + * @schema WebhookSpec#url + */ + readonly url: string; + +} + +/** + * Converts an object of type 'WebhookSpec' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_WebhookSpec(obj: WebhookSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'body': obj.body, + 'caBundle': obj.caBundle, + 'caProvider': toJson_WebhookSpecCaProvider(obj.caProvider), + 'headers': ((obj.headers) === undefined) ? undefined : (Object.entries(obj.headers).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'method': obj.method, + 'result': toJson_WebhookSpecResult(obj.result), + 'secrets': obj.secrets?.map(y => toJson_WebhookSpecSecrets(y)), + 'timeout': obj.timeout, + 'url': obj.url, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The provider for the CA bundle to use to validate webhook server certificate. + * + * @schema WebhookSpecCaProvider + */ +export interface WebhookSpecCaProvider { + /** + * The key the value inside of the provider type to use, only used with "Secret" type + * + * @schema WebhookSpecCaProvider#key + */ + readonly key?: string; + + /** + * The name of the object located at the provider type. + * + * @schema WebhookSpecCaProvider#name + */ + readonly name: string; + + /** + * The namespace the Provider type is in. + * + * @schema WebhookSpecCaProvider#namespace + */ + readonly namespace?: string; + + /** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema WebhookSpecCaProvider#type + */ + readonly type: WebhookSpecCaProviderType; + +} + +/** + * Converts an object of type 'WebhookSpecCaProvider' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_WebhookSpecCaProvider(obj: WebhookSpecCaProvider | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'namespace': obj.namespace, + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Result formatting + * + * @schema WebhookSpecResult + */ +export interface WebhookSpecResult { + /** + * Json path of return value + * + * @schema WebhookSpecResult#jsonPath + */ + readonly jsonPath?: string; + +} + +/** + * Converts an object of type 'WebhookSpecResult' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_WebhookSpecResult(obj: WebhookSpecResult | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'jsonPath': obj.jsonPath, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema WebhookSpecSecrets + */ +export interface WebhookSpecSecrets { + /** + * Name of this secret in templates + * + * @schema WebhookSpecSecrets#name + */ + readonly name: string; + + /** + * Secret ref to fill in credentials + * + * @schema WebhookSpecSecrets#secretRef + */ + readonly secretRef: WebhookSpecSecretsSecretRef; + +} + +/** + * Converts an object of type 'WebhookSpecSecrets' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_WebhookSpecSecrets(obj: WebhookSpecSecrets | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'name': obj.name, + 'secretRef': toJson_WebhookSpecSecretsSecretRef(obj.secretRef), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * The type of provider to use such as "Secret", or "ConfigMap". + * + * @schema WebhookSpecCaProviderType + */ +export enum WebhookSpecCaProviderType { + /** Secret */ + SECRET = "Secret", + /** ConfigMap */ + CONFIG_MAP = "ConfigMap", +} + +/** + * Secret ref to fill in credentials + * + * @schema WebhookSpecSecretsSecretRef + */ +export interface WebhookSpecSecretsSecretRef { + /** + * The key where the token is found. + * + * @schema WebhookSpecSecretsSecretRef#key + */ + readonly key?: string; + + /** + * The name of the Secret resource being referred to. + * + * @schema WebhookSpecSecretsSecretRef#name + */ + readonly name?: string; + +} + +/** + * Converts an object of type 'WebhookSpecSecretsSecretRef' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_WebhookSpecSecretsSecretRef(obj: WebhookSpecSecretsSecretRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + diff --git a/k8s/imports/k8s.ts b/k8s/imports/k8s.ts index 74dd00e..e3efc08 100644 --- a/k8s/imports/k8s.ts +++ b/k8s/imports/k8s.ts @@ -1,6 +1,6 @@ // generated by cdk8s -import { ApiObject, GroupVersionKind } from "cdk8s"; -import { Construct } from "constructs"; +import { ApiObject, GroupVersionKind } from 'cdk8s'; +import { Construct } from 'constructs'; /** * MutatingWebhookConfiguration describes the configuration of and admission webhook that accept or reject and may change the object. @@ -12,9 +12,9 @@ export class KubeMutatingWebhookConfiguration extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "admissionregistration.k8s.io/v1", - kind: "MutatingWebhookConfiguration", - }; + apiVersion: 'admissionregistration.k8s.io/v1', + kind: 'MutatingWebhookConfiguration', + } /** * Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration". @@ -23,9 +23,7 @@ export class KubeMutatingWebhookConfiguration extends ApiObject { * * @param props initialization props */ - public static manifest( - props: KubeMutatingWebhookConfigurationProps = {}, - ): any { + public static manifest(props: KubeMutatingWebhookConfigurationProps = {}): any { return { ...KubeMutatingWebhookConfiguration.GVK, ...toJson_KubeMutatingWebhookConfigurationProps(props), @@ -38,11 +36,7 @@ export class KubeMutatingWebhookConfiguration extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeMutatingWebhookConfigurationProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeMutatingWebhookConfigurationProps = {}) { super(scope, id, { ...KubeMutatingWebhookConfiguration.GVK, ...props, @@ -72,9 +66,9 @@ export class KubeMutatingWebhookConfigurationList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.admissionregistration.v1.MutatingWebhookConfigurationList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "admissionregistration.k8s.io/v1", - kind: "MutatingWebhookConfigurationList", - }; + apiVersion: 'admissionregistration.k8s.io/v1', + kind: 'MutatingWebhookConfigurationList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.MutatingWebhookConfigurationList". @@ -83,9 +77,7 @@ export class KubeMutatingWebhookConfigurationList extends ApiObject { * * @param props initialization props */ - public static manifest( - props: KubeMutatingWebhookConfigurationListProps, - ): any { + public static manifest(props: KubeMutatingWebhookConfigurationListProps): any { return { ...KubeMutatingWebhookConfigurationList.GVK, ...toJson_KubeMutatingWebhookConfigurationListProps(props), @@ -98,11 +90,7 @@ export class KubeMutatingWebhookConfigurationList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeMutatingWebhookConfigurationListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeMutatingWebhookConfigurationListProps) { super(scope, id, { ...KubeMutatingWebhookConfigurationList.GVK, ...props, @@ -132,9 +120,9 @@ export class KubeValidatingWebhookConfiguration extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "admissionregistration.k8s.io/v1", - kind: "ValidatingWebhookConfiguration", - }; + apiVersion: 'admissionregistration.k8s.io/v1', + kind: 'ValidatingWebhookConfiguration', + } /** * Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration". @@ -143,9 +131,7 @@ export class KubeValidatingWebhookConfiguration extends ApiObject { * * @param props initialization props */ - public static manifest( - props: KubeValidatingWebhookConfigurationProps = {}, - ): any { + public static manifest(props: KubeValidatingWebhookConfigurationProps = {}): any { return { ...KubeValidatingWebhookConfiguration.GVK, ...toJson_KubeValidatingWebhookConfigurationProps(props), @@ -158,11 +144,7 @@ export class KubeValidatingWebhookConfiguration extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeValidatingWebhookConfigurationProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeValidatingWebhookConfigurationProps = {}) { super(scope, id, { ...KubeValidatingWebhookConfiguration.GVK, ...props, @@ -192,9 +174,9 @@ export class KubeValidatingWebhookConfigurationList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfigurationList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "admissionregistration.k8s.io/v1", - kind: "ValidatingWebhookConfigurationList", - }; + apiVersion: 'admissionregistration.k8s.io/v1', + kind: 'ValidatingWebhookConfigurationList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1.ValidatingWebhookConfigurationList". @@ -203,9 +185,7 @@ export class KubeValidatingWebhookConfigurationList extends ApiObject { * * @param props initialization props */ - public static manifest( - props: KubeValidatingWebhookConfigurationListProps, - ): any { + public static manifest(props: KubeValidatingWebhookConfigurationListProps): any { return { ...KubeValidatingWebhookConfigurationList.GVK, ...toJson_KubeValidatingWebhookConfigurationListProps(props), @@ -218,11 +198,7 @@ export class KubeValidatingWebhookConfigurationList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeValidatingWebhookConfigurationListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeValidatingWebhookConfigurationListProps) { super(scope, id, { ...KubeValidatingWebhookConfigurationList.GVK, ...props, @@ -252,9 +228,9 @@ export class KubeValidatingAdmissionPolicyV1Alpha1 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "admissionregistration.k8s.io/v1alpha1", - kind: "ValidatingAdmissionPolicy", - }; + apiVersion: 'admissionregistration.k8s.io/v1alpha1', + kind: 'ValidatingAdmissionPolicy', + } /** * Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy". @@ -263,9 +239,7 @@ export class KubeValidatingAdmissionPolicyV1Alpha1 extends ApiObject { * * @param props initialization props */ - public static manifest( - props: KubeValidatingAdmissionPolicyV1Alpha1Props = {}, - ): any { + public static manifest(props: KubeValidatingAdmissionPolicyV1Alpha1Props = {}): any { return { ...KubeValidatingAdmissionPolicyV1Alpha1.GVK, ...toJson_KubeValidatingAdmissionPolicyV1Alpha1Props(props), @@ -278,11 +252,7 @@ export class KubeValidatingAdmissionPolicyV1Alpha1 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeValidatingAdmissionPolicyV1Alpha1Props = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeValidatingAdmissionPolicyV1Alpha1Props = {}) { super(scope, id, { ...KubeValidatingAdmissionPolicyV1Alpha1.GVK, ...props, @@ -304,6 +274,10 @@ export class KubeValidatingAdmissionPolicyV1Alpha1 extends ApiObject { /** * ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. + +For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. + +The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. * * @schema io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding */ @@ -312,9 +286,9 @@ export class KubeValidatingAdmissionPolicyBindingV1Alpha1 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "admissionregistration.k8s.io/v1alpha1", - kind: "ValidatingAdmissionPolicyBinding", - }; + apiVersion: 'admissionregistration.k8s.io/v1alpha1', + kind: 'ValidatingAdmissionPolicyBinding', + } /** * Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding". @@ -323,9 +297,7 @@ export class KubeValidatingAdmissionPolicyBindingV1Alpha1 extends ApiObject { * * @param props initialization props */ - public static manifest( - props: KubeValidatingAdmissionPolicyBindingV1Alpha1Props = {}, - ): any { + public static manifest(props: KubeValidatingAdmissionPolicyBindingV1Alpha1Props = {}): any { return { ...KubeValidatingAdmissionPolicyBindingV1Alpha1.GVK, ...toJson_KubeValidatingAdmissionPolicyBindingV1Alpha1Props(props), @@ -338,11 +310,7 @@ export class KubeValidatingAdmissionPolicyBindingV1Alpha1 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeValidatingAdmissionPolicyBindingV1Alpha1Props = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeValidatingAdmissionPolicyBindingV1Alpha1Props = {}) { super(scope, id, { ...KubeValidatingAdmissionPolicyBindingV1Alpha1.GVK, ...props, @@ -372,9 +340,9 @@ export class KubeValidatingAdmissionPolicyBindingListV1Alpha1 extends ApiObject * Returns the apiVersion and kind for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "admissionregistration.k8s.io/v1alpha1", - kind: "ValidatingAdmissionPolicyBindingList", - }; + apiVersion: 'admissionregistration.k8s.io/v1alpha1', + kind: 'ValidatingAdmissionPolicyBindingList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingList". @@ -383,9 +351,7 @@ export class KubeValidatingAdmissionPolicyBindingListV1Alpha1 extends ApiObject * * @param props initialization props */ - public static manifest( - props: KubeValidatingAdmissionPolicyBindingListV1Alpha1Props = {}, - ): any { + public static manifest(props: KubeValidatingAdmissionPolicyBindingListV1Alpha1Props = {}): any { return { ...KubeValidatingAdmissionPolicyBindingListV1Alpha1.GVK, ...toJson_KubeValidatingAdmissionPolicyBindingListV1Alpha1Props(props), @@ -398,11 +364,7 @@ export class KubeValidatingAdmissionPolicyBindingListV1Alpha1 extends ApiObject * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeValidatingAdmissionPolicyBindingListV1Alpha1Props = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeValidatingAdmissionPolicyBindingListV1Alpha1Props = {}) { super(scope, id, { ...KubeValidatingAdmissionPolicyBindingListV1Alpha1.GVK, ...props, @@ -432,9 +394,9 @@ export class KubeValidatingAdmissionPolicyListV1Alpha1 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "admissionregistration.k8s.io/v1alpha1", - kind: "ValidatingAdmissionPolicyList", - }; + apiVersion: 'admissionregistration.k8s.io/v1alpha1', + kind: 'ValidatingAdmissionPolicyList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyList". @@ -443,9 +405,7 @@ export class KubeValidatingAdmissionPolicyListV1Alpha1 extends ApiObject { * * @param props initialization props */ - public static manifest( - props: KubeValidatingAdmissionPolicyListV1Alpha1Props = {}, - ): any { + public static manifest(props: KubeValidatingAdmissionPolicyListV1Alpha1Props = {}): any { return { ...KubeValidatingAdmissionPolicyListV1Alpha1.GVK, ...toJson_KubeValidatingAdmissionPolicyListV1Alpha1Props(props), @@ -458,11 +418,7 @@ export class KubeValidatingAdmissionPolicyListV1Alpha1 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeValidatingAdmissionPolicyListV1Alpha1Props = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeValidatingAdmissionPolicyListV1Alpha1Props = {}) { super(scope, id, { ...KubeValidatingAdmissionPolicyListV1Alpha1.GVK, ...props, @@ -482,6 +438,226 @@ export class KubeValidatingAdmissionPolicyListV1Alpha1 extends ApiObject { } } +/** + * ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy + */ +export class KubeValidatingAdmissionPolicyV1Beta1 extends ApiObject { + /** + * Returns the apiVersion and kind for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'admissionregistration.k8s.io/v1beta1', + kind: 'ValidatingAdmissionPolicy', + } + + /** + * Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: KubeValidatingAdmissionPolicyV1Beta1Props = {}): any { + return { + ...KubeValidatingAdmissionPolicyV1Beta1.GVK, + ...toJson_KubeValidatingAdmissionPolicyV1Beta1Props(props), + }; + } + + /** + * Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: KubeValidatingAdmissionPolicyV1Beta1Props = {}) { + super(scope, id, { + ...KubeValidatingAdmissionPolicyV1Beta1.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...KubeValidatingAdmissionPolicyV1Beta1.GVK, + ...toJson_KubeValidatingAdmissionPolicyV1Beta1Props(resolved), + }; + } +} + +/** + * ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. + +For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. + +The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding + */ +export class KubeValidatingAdmissionPolicyBindingV1Beta1 extends ApiObject { + /** + * Returns the apiVersion and kind for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'admissionregistration.k8s.io/v1beta1', + kind: 'ValidatingAdmissionPolicyBinding', + } + + /** + * Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: KubeValidatingAdmissionPolicyBindingV1Beta1Props = {}): any { + return { + ...KubeValidatingAdmissionPolicyBindingV1Beta1.GVK, + ...toJson_KubeValidatingAdmissionPolicyBindingV1Beta1Props(props), + }; + } + + /** + * Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: KubeValidatingAdmissionPolicyBindingV1Beta1Props = {}) { + super(scope, id, { + ...KubeValidatingAdmissionPolicyBindingV1Beta1.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...KubeValidatingAdmissionPolicyBindingV1Beta1.GVK, + ...toJson_KubeValidatingAdmissionPolicyBindingV1Beta1Props(resolved), + }; + } +} + +/** + * ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList + */ +export class KubeValidatingAdmissionPolicyBindingListV1Beta1 extends ApiObject { + /** + * Returns the apiVersion and kind for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'admissionregistration.k8s.io/v1beta1', + kind: 'ValidatingAdmissionPolicyBindingList', + } + + /** + * Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: KubeValidatingAdmissionPolicyBindingListV1Beta1Props = {}): any { + return { + ...KubeValidatingAdmissionPolicyBindingListV1Beta1.GVK, + ...toJson_KubeValidatingAdmissionPolicyBindingListV1Beta1Props(props), + }; + } + + /** + * Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: KubeValidatingAdmissionPolicyBindingListV1Beta1Props = {}) { + super(scope, id, { + ...KubeValidatingAdmissionPolicyBindingListV1Beta1.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...KubeValidatingAdmissionPolicyBindingListV1Beta1.GVK, + ...toJson_KubeValidatingAdmissionPolicyBindingListV1Beta1Props(resolved), + }; + } +} + +/** + * ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList + */ +export class KubeValidatingAdmissionPolicyListV1Beta1 extends ApiObject { + /** + * Returns the apiVersion and kind for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'admissionregistration.k8s.io/v1beta1', + kind: 'ValidatingAdmissionPolicyList', + } + + /** + * Renders a Kubernetes manifest for "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: KubeValidatingAdmissionPolicyListV1Beta1Props = {}): any { + return { + ...KubeValidatingAdmissionPolicyListV1Beta1.GVK, + ...toJson_KubeValidatingAdmissionPolicyListV1Beta1Props(props), + }; + } + + /** + * Defines a "io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: KubeValidatingAdmissionPolicyListV1Beta1Props = {}) { + super(scope, id, { + ...KubeValidatingAdmissionPolicyListV1Beta1.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...KubeValidatingAdmissionPolicyListV1Beta1.GVK, + ...toJson_KubeValidatingAdmissionPolicyListV1Beta1Props(resolved), + }; + } +} + /** * Storage version of a specific resource. * @@ -492,9 +668,9 @@ export class KubeStorageVersionV1Alpha1 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.apiserverinternal.v1alpha1.StorageVersion" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "internal.apiserver.k8s.io/v1alpha1", - kind: "StorageVersion", - }; + apiVersion: 'internal.apiserver.k8s.io/v1alpha1', + kind: 'StorageVersion', + } /** * Renders a Kubernetes manifest for "io.k8s.api.apiserverinternal.v1alpha1.StorageVersion". @@ -516,11 +692,7 @@ export class KubeStorageVersionV1Alpha1 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeStorageVersionV1Alpha1Props, - ) { + public constructor(scope: Construct, id: string, props: KubeStorageVersionV1Alpha1Props) { super(scope, id, { ...KubeStorageVersionV1Alpha1.GVK, ...props, @@ -550,9 +722,9 @@ export class KubeStorageVersionListV1Alpha1 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.apiserverinternal.v1alpha1.StorageVersionList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "internal.apiserver.k8s.io/v1alpha1", - kind: "StorageVersionList", - }; + apiVersion: 'internal.apiserver.k8s.io/v1alpha1', + kind: 'StorageVersionList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.apiserverinternal.v1alpha1.StorageVersionList". @@ -574,11 +746,7 @@ export class KubeStorageVersionListV1Alpha1 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeStorageVersionListV1Alpha1Props, - ) { + public constructor(scope: Construct, id: string, props: KubeStorageVersionListV1Alpha1Props) { super(scope, id, { ...KubeStorageVersionListV1Alpha1.GVK, ...props, @@ -608,9 +776,9 @@ export class KubeControllerRevision extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.apps.v1.ControllerRevision" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "apps/v1", - kind: "ControllerRevision", - }; + apiVersion: 'apps/v1', + kind: 'ControllerRevision', + } /** * Renders a Kubernetes manifest for "io.k8s.api.apps.v1.ControllerRevision". @@ -632,11 +800,7 @@ export class KubeControllerRevision extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeControllerRevisionProps, - ) { + public constructor(scope: Construct, id: string, props: KubeControllerRevisionProps) { super(scope, id, { ...KubeControllerRevision.GVK, ...props, @@ -666,9 +830,9 @@ export class KubeControllerRevisionList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.apps.v1.ControllerRevisionList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "apps/v1", - kind: "ControllerRevisionList", - }; + apiVersion: 'apps/v1', + kind: 'ControllerRevisionList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.apps.v1.ControllerRevisionList". @@ -690,11 +854,7 @@ export class KubeControllerRevisionList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeControllerRevisionListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeControllerRevisionListProps) { super(scope, id, { ...KubeControllerRevisionList.GVK, ...props, @@ -724,9 +884,9 @@ export class KubeDaemonSet extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.apps.v1.DaemonSet" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "apps/v1", - kind: "DaemonSet", - }; + apiVersion: 'apps/v1', + kind: 'DaemonSet', + } /** * Renders a Kubernetes manifest for "io.k8s.api.apps.v1.DaemonSet". @@ -748,11 +908,7 @@ export class KubeDaemonSet extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeDaemonSetProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeDaemonSetProps = {}) { super(scope, id, { ...KubeDaemonSet.GVK, ...props, @@ -782,9 +938,9 @@ export class KubeDaemonSetList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.apps.v1.DaemonSetList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "apps/v1", - kind: "DaemonSetList", - }; + apiVersion: 'apps/v1', + kind: 'DaemonSetList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.apps.v1.DaemonSetList". @@ -806,11 +962,7 @@ export class KubeDaemonSetList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeDaemonSetListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeDaemonSetListProps) { super(scope, id, { ...KubeDaemonSetList.GVK, ...props, @@ -840,9 +992,9 @@ export class KubeDeployment extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.apps.v1.Deployment" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "apps/v1", - kind: "Deployment", - }; + apiVersion: 'apps/v1', + kind: 'Deployment', + } /** * Renders a Kubernetes manifest for "io.k8s.api.apps.v1.Deployment". @@ -864,11 +1016,7 @@ export class KubeDeployment extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeDeploymentProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeDeploymentProps = {}) { super(scope, id, { ...KubeDeployment.GVK, ...props, @@ -898,9 +1046,9 @@ export class KubeDeploymentList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.apps.v1.DeploymentList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "apps/v1", - kind: "DeploymentList", - }; + apiVersion: 'apps/v1', + kind: 'DeploymentList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.apps.v1.DeploymentList". @@ -922,11 +1070,7 @@ export class KubeDeploymentList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeDeploymentListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeDeploymentListProps) { super(scope, id, { ...KubeDeploymentList.GVK, ...props, @@ -956,9 +1100,9 @@ export class KubeReplicaSet extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.apps.v1.ReplicaSet" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "apps/v1", - kind: "ReplicaSet", - }; + apiVersion: 'apps/v1', + kind: 'ReplicaSet', + } /** * Renders a Kubernetes manifest for "io.k8s.api.apps.v1.ReplicaSet". @@ -980,11 +1124,7 @@ export class KubeReplicaSet extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeReplicaSetProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeReplicaSetProps = {}) { super(scope, id, { ...KubeReplicaSet.GVK, ...props, @@ -1014,9 +1154,9 @@ export class KubeReplicaSetList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.apps.v1.ReplicaSetList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "apps/v1", - kind: "ReplicaSetList", - }; + apiVersion: 'apps/v1', + kind: 'ReplicaSetList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.apps.v1.ReplicaSetList". @@ -1038,11 +1178,7 @@ export class KubeReplicaSetList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeReplicaSetListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeReplicaSetListProps) { super(scope, id, { ...KubeReplicaSetList.GVK, ...props, @@ -1076,9 +1212,9 @@ export class KubeStatefulSet extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.apps.v1.StatefulSet" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "apps/v1", - kind: "StatefulSet", - }; + apiVersion: 'apps/v1', + kind: 'StatefulSet', + } /** * Renders a Kubernetes manifest for "io.k8s.api.apps.v1.StatefulSet". @@ -1100,11 +1236,7 @@ export class KubeStatefulSet extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeStatefulSetProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeStatefulSetProps = {}) { super(scope, id, { ...KubeStatefulSet.GVK, ...props, @@ -1134,9 +1266,9 @@ export class KubeStatefulSetList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.apps.v1.StatefulSetList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "apps/v1", - kind: "StatefulSetList", - }; + apiVersion: 'apps/v1', + kind: 'StatefulSetList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.apps.v1.StatefulSetList". @@ -1158,11 +1290,7 @@ export class KubeStatefulSetList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeStatefulSetListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeStatefulSetListProps) { super(scope, id, { ...KubeStatefulSetList.GVK, ...props, @@ -1182,6 +1310,60 @@ export class KubeStatefulSetList extends ApiObject { } } +/** + * SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. + * + * @schema io.k8s.api.authentication.v1.SelfSubjectReview + */ +export class KubeSelfSubjectReview extends ApiObject { + /** + * Returns the apiVersion and kind for "io.k8s.api.authentication.v1.SelfSubjectReview" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'authentication.k8s.io/v1', + kind: 'SelfSubjectReview', + } + + /** + * Renders a Kubernetes manifest for "io.k8s.api.authentication.v1.SelfSubjectReview". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: KubeSelfSubjectReviewProps = {}): any { + return { + ...KubeSelfSubjectReview.GVK, + ...toJson_KubeSelfSubjectReviewProps(props), + }; + } + + /** + * Defines a "io.k8s.api.authentication.v1.SelfSubjectReview" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: KubeSelfSubjectReviewProps = {}) { + super(scope, id, { + ...KubeSelfSubjectReview.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...KubeSelfSubjectReview.GVK, + ...toJson_KubeSelfSubjectReviewProps(resolved), + }; + } +} + /** * TokenRequest requests a token for a given service account. * @@ -1192,9 +1374,9 @@ export class KubeTokenRequest extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.authentication.v1.TokenRequest" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "authentication.k8s.io/v1", - kind: "TokenRequest", - }; + apiVersion: 'authentication.k8s.io/v1', + kind: 'TokenRequest', + } /** * Renders a Kubernetes manifest for "io.k8s.api.authentication.v1.TokenRequest". @@ -1216,11 +1398,7 @@ export class KubeTokenRequest extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeTokenRequestProps, - ) { + public constructor(scope: Construct, id: string, props: KubeTokenRequestProps) { super(scope, id, { ...KubeTokenRequest.GVK, ...props, @@ -1250,9 +1428,9 @@ export class KubeTokenReview extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.authentication.v1.TokenReview" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "authentication.k8s.io/v1", - kind: "TokenReview", - }; + apiVersion: 'authentication.k8s.io/v1', + kind: 'TokenReview', + } /** * Renders a Kubernetes manifest for "io.k8s.api.authentication.v1.TokenReview". @@ -1274,11 +1452,7 @@ export class KubeTokenReview extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeTokenReviewProps, - ) { + public constructor(scope: Construct, id: string, props: KubeTokenReviewProps) { super(scope, id, { ...KubeTokenReview.GVK, ...props, @@ -1308,9 +1482,9 @@ export class KubeSelfSubjectReviewV1Alpha1 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.authentication.v1alpha1.SelfSubjectReview" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "authentication.k8s.io/v1alpha1", - kind: "SelfSubjectReview", - }; + apiVersion: 'authentication.k8s.io/v1alpha1', + kind: 'SelfSubjectReview', + } /** * Renders a Kubernetes manifest for "io.k8s.api.authentication.v1alpha1.SelfSubjectReview". @@ -1332,11 +1506,7 @@ export class KubeSelfSubjectReviewV1Alpha1 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeSelfSubjectReviewV1Alpha1Props = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeSelfSubjectReviewV1Alpha1Props = {}) { super(scope, id, { ...KubeSelfSubjectReviewV1Alpha1.GVK, ...props, @@ -1366,9 +1536,9 @@ export class KubeSelfSubjectReviewV1Beta1 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.authentication.v1beta1.SelfSubjectReview" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "authentication.k8s.io/v1beta1", - kind: "SelfSubjectReview", - }; + apiVersion: 'authentication.k8s.io/v1beta1', + kind: 'SelfSubjectReview', + } /** * Renders a Kubernetes manifest for "io.k8s.api.authentication.v1beta1.SelfSubjectReview". @@ -1390,11 +1560,7 @@ export class KubeSelfSubjectReviewV1Beta1 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeSelfSubjectReviewV1Beta1Props = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeSelfSubjectReviewV1Beta1Props = {}) { super(scope, id, { ...KubeSelfSubjectReviewV1Beta1.GVK, ...props, @@ -1424,9 +1590,9 @@ export class KubeLocalSubjectAccessReview extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.authorization.v1.LocalSubjectAccessReview" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "authorization.k8s.io/v1", - kind: "LocalSubjectAccessReview", - }; + apiVersion: 'authorization.k8s.io/v1', + kind: 'LocalSubjectAccessReview', + } /** * Renders a Kubernetes manifest for "io.k8s.api.authorization.v1.LocalSubjectAccessReview". @@ -1448,11 +1614,7 @@ export class KubeLocalSubjectAccessReview extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeLocalSubjectAccessReviewProps, - ) { + public constructor(scope: Construct, id: string, props: KubeLocalSubjectAccessReviewProps) { super(scope, id, { ...KubeLocalSubjectAccessReview.GVK, ...props, @@ -1482,9 +1644,9 @@ export class KubeSelfSubjectAccessReview extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.authorization.v1.SelfSubjectAccessReview" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "authorization.k8s.io/v1", - kind: "SelfSubjectAccessReview", - }; + apiVersion: 'authorization.k8s.io/v1', + kind: 'SelfSubjectAccessReview', + } /** * Renders a Kubernetes manifest for "io.k8s.api.authorization.v1.SelfSubjectAccessReview". @@ -1506,11 +1668,7 @@ export class KubeSelfSubjectAccessReview extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeSelfSubjectAccessReviewProps, - ) { + public constructor(scope: Construct, id: string, props: KubeSelfSubjectAccessReviewProps) { super(scope, id, { ...KubeSelfSubjectAccessReview.GVK, ...props, @@ -1540,9 +1698,9 @@ export class KubeSelfSubjectRulesReview extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.authorization.v1.SelfSubjectRulesReview" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "authorization.k8s.io/v1", - kind: "SelfSubjectRulesReview", - }; + apiVersion: 'authorization.k8s.io/v1', + kind: 'SelfSubjectRulesReview', + } /** * Renders a Kubernetes manifest for "io.k8s.api.authorization.v1.SelfSubjectRulesReview". @@ -1564,11 +1722,7 @@ export class KubeSelfSubjectRulesReview extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeSelfSubjectRulesReviewProps, - ) { + public constructor(scope: Construct, id: string, props: KubeSelfSubjectRulesReviewProps) { super(scope, id, { ...KubeSelfSubjectRulesReview.GVK, ...props, @@ -1598,9 +1752,9 @@ export class KubeSubjectAccessReview extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.authorization.v1.SubjectAccessReview" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "authorization.k8s.io/v1", - kind: "SubjectAccessReview", - }; + apiVersion: 'authorization.k8s.io/v1', + kind: 'SubjectAccessReview', + } /** * Renders a Kubernetes manifest for "io.k8s.api.authorization.v1.SubjectAccessReview". @@ -1622,11 +1776,7 @@ export class KubeSubjectAccessReview extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeSubjectAccessReviewProps, - ) { + public constructor(scope: Construct, id: string, props: KubeSubjectAccessReviewProps) { super(scope, id, { ...KubeSubjectAccessReview.GVK, ...props, @@ -1656,9 +1806,9 @@ export class KubeHorizontalPodAutoscaler extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "autoscaling/v1", - kind: "HorizontalPodAutoscaler", - }; + apiVersion: 'autoscaling/v1', + kind: 'HorizontalPodAutoscaler', + } /** * Renders a Kubernetes manifest for "io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler". @@ -1680,11 +1830,7 @@ export class KubeHorizontalPodAutoscaler extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeHorizontalPodAutoscalerProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeHorizontalPodAutoscalerProps = {}) { super(scope, id, { ...KubeHorizontalPodAutoscaler.GVK, ...props, @@ -1714,9 +1860,9 @@ export class KubeHorizontalPodAutoscalerList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "autoscaling/v1", - kind: "HorizontalPodAutoscalerList", - }; + apiVersion: 'autoscaling/v1', + kind: 'HorizontalPodAutoscalerList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList". @@ -1738,11 +1884,7 @@ export class KubeHorizontalPodAutoscalerList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeHorizontalPodAutoscalerListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeHorizontalPodAutoscalerListProps) { super(scope, id, { ...KubeHorizontalPodAutoscalerList.GVK, ...props, @@ -1772,9 +1914,9 @@ export class KubeScale extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.autoscaling.v1.Scale" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "autoscaling/v1", - kind: "Scale", - }; + apiVersion: 'autoscaling/v1', + kind: 'Scale', + } /** * Renders a Kubernetes manifest for "io.k8s.api.autoscaling.v1.Scale". @@ -1826,9 +1968,9 @@ export class KubeHorizontalPodAutoscalerV2 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "autoscaling/v2", - kind: "HorizontalPodAutoscaler", - }; + apiVersion: 'autoscaling/v2', + kind: 'HorizontalPodAutoscaler', + } /** * Renders a Kubernetes manifest for "io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler". @@ -1850,11 +1992,7 @@ export class KubeHorizontalPodAutoscalerV2 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeHorizontalPodAutoscalerV2Props = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeHorizontalPodAutoscalerV2Props = {}) { super(scope, id, { ...KubeHorizontalPodAutoscalerV2.GVK, ...props, @@ -1884,9 +2022,9 @@ export class KubeHorizontalPodAutoscalerListV2 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "autoscaling/v2", - kind: "HorizontalPodAutoscalerList", - }; + apiVersion: 'autoscaling/v2', + kind: 'HorizontalPodAutoscalerList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList". @@ -1908,11 +2046,7 @@ export class KubeHorizontalPodAutoscalerListV2 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeHorizontalPodAutoscalerListV2Props, - ) { + public constructor(scope: Construct, id: string, props: KubeHorizontalPodAutoscalerListV2Props) { super(scope, id, { ...KubeHorizontalPodAutoscalerListV2.GVK, ...props, @@ -1942,9 +2076,9 @@ export class KubeCronJob extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.batch.v1.CronJob" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "batch/v1", - kind: "CronJob", - }; + apiVersion: 'batch/v1', + kind: 'CronJob', + } /** * Renders a Kubernetes manifest for "io.k8s.api.batch.v1.CronJob". @@ -1966,11 +2100,7 @@ export class KubeCronJob extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeCronJobProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeCronJobProps = {}) { super(scope, id, { ...KubeCronJob.GVK, ...props, @@ -2000,9 +2130,9 @@ export class KubeCronJobList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.batch.v1.CronJobList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "batch/v1", - kind: "CronJobList", - }; + apiVersion: 'batch/v1', + kind: 'CronJobList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.batch.v1.CronJobList". @@ -2024,11 +2154,7 @@ export class KubeCronJobList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeCronJobListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeCronJobListProps) { super(scope, id, { ...KubeCronJobList.GVK, ...props, @@ -2058,9 +2184,9 @@ export class KubeJob extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.batch.v1.Job" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "batch/v1", - kind: "Job", - }; + apiVersion: 'batch/v1', + kind: 'Job', + } /** * Renders a Kubernetes manifest for "io.k8s.api.batch.v1.Job". @@ -2112,9 +2238,9 @@ export class KubeJobList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.batch.v1.JobList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "batch/v1", - kind: "JobList", - }; + apiVersion: 'batch/v1', + kind: 'JobList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.batch.v1.JobList". @@ -2172,9 +2298,9 @@ export class KubeCertificateSigningRequest extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.certificates.v1.CertificateSigningRequest" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "certificates.k8s.io/v1", - kind: "CertificateSigningRequest", - }; + apiVersion: 'certificates.k8s.io/v1', + kind: 'CertificateSigningRequest', + } /** * Renders a Kubernetes manifest for "io.k8s.api.certificates.v1.CertificateSigningRequest". @@ -2196,11 +2322,7 @@ export class KubeCertificateSigningRequest extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeCertificateSigningRequestProps, - ) { + public constructor(scope: Construct, id: string, props: KubeCertificateSigningRequestProps) { super(scope, id, { ...KubeCertificateSigningRequest.GVK, ...props, @@ -2230,9 +2352,9 @@ export class KubeCertificateSigningRequestList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.certificates.v1.CertificateSigningRequestList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "certificates.k8s.io/v1", - kind: "CertificateSigningRequestList", - }; + apiVersion: 'certificates.k8s.io/v1', + kind: 'CertificateSigningRequestList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.certificates.v1.CertificateSigningRequestList". @@ -2254,11 +2376,7 @@ export class KubeCertificateSigningRequestList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeCertificateSigningRequestListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeCertificateSigningRequestListProps) { super(scope, id, { ...KubeCertificateSigningRequestList.GVK, ...props, @@ -2292,9 +2410,9 @@ export class KubeClusterTrustBundleV1Alpha1 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.certificates.v1alpha1.ClusterTrustBundle" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "certificates.k8s.io/v1alpha1", - kind: "ClusterTrustBundle", - }; + apiVersion: 'certificates.k8s.io/v1alpha1', + kind: 'ClusterTrustBundle', + } /** * Renders a Kubernetes manifest for "io.k8s.api.certificates.v1alpha1.ClusterTrustBundle". @@ -2316,11 +2434,7 @@ export class KubeClusterTrustBundleV1Alpha1 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeClusterTrustBundleV1Alpha1Props, - ) { + public constructor(scope: Construct, id: string, props: KubeClusterTrustBundleV1Alpha1Props) { super(scope, id, { ...KubeClusterTrustBundleV1Alpha1.GVK, ...props, @@ -2350,9 +2464,9 @@ export class KubeClusterTrustBundleListV1Alpha1 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.certificates.v1alpha1.ClusterTrustBundleList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "certificates.k8s.io/v1alpha1", - kind: "ClusterTrustBundleList", - }; + apiVersion: 'certificates.k8s.io/v1alpha1', + kind: 'ClusterTrustBundleList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.certificates.v1alpha1.ClusterTrustBundleList". @@ -2374,11 +2488,7 @@ export class KubeClusterTrustBundleListV1Alpha1 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeClusterTrustBundleListV1Alpha1Props, - ) { + public constructor(scope: Construct, id: string, props: KubeClusterTrustBundleListV1Alpha1Props) { super(scope, id, { ...KubeClusterTrustBundleListV1Alpha1.GVK, ...props, @@ -2408,9 +2518,9 @@ export class KubeLease extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.coordination.v1.Lease" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "coordination.k8s.io/v1", - kind: "Lease", - }; + apiVersion: 'coordination.k8s.io/v1', + kind: 'Lease', + } /** * Renders a Kubernetes manifest for "io.k8s.api.coordination.v1.Lease". @@ -2462,9 +2572,9 @@ export class KubeLeaseList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.coordination.v1.LeaseList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "coordination.k8s.io/v1", - kind: "LeaseList", - }; + apiVersion: 'coordination.k8s.io/v1', + kind: 'LeaseList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.coordination.v1.LeaseList". @@ -2516,9 +2626,9 @@ export class KubeBinding extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.Binding" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "Binding", - }; + apiVersion: 'v1', + kind: 'Binding', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.Binding". @@ -2570,9 +2680,9 @@ export class KubeComponentStatus extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.ComponentStatus" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "ComponentStatus", - }; + apiVersion: 'v1', + kind: 'ComponentStatus', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.ComponentStatus". @@ -2594,11 +2704,7 @@ export class KubeComponentStatus extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeComponentStatusProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeComponentStatusProps = {}) { super(scope, id, { ...KubeComponentStatus.GVK, ...props, @@ -2628,9 +2734,9 @@ export class KubeComponentStatusList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.ComponentStatusList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "ComponentStatusList", - }; + apiVersion: 'v1', + kind: 'ComponentStatusList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.ComponentStatusList". @@ -2652,11 +2758,7 @@ export class KubeComponentStatusList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeComponentStatusListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeComponentStatusListProps) { super(scope, id, { ...KubeComponentStatusList.GVK, ...props, @@ -2686,9 +2788,9 @@ export class KubeConfigMap extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.ConfigMap" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "ConfigMap", - }; + apiVersion: 'v1', + kind: 'ConfigMap', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.ConfigMap". @@ -2710,11 +2812,7 @@ export class KubeConfigMap extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeConfigMapProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeConfigMapProps = {}) { super(scope, id, { ...KubeConfigMap.GVK, ...props, @@ -2744,9 +2842,9 @@ export class KubeConfigMapList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.ConfigMapList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "ConfigMapList", - }; + apiVersion: 'v1', + kind: 'ConfigMapList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.ConfigMapList". @@ -2768,11 +2866,7 @@ export class KubeConfigMapList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeConfigMapListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeConfigMapListProps) { super(scope, id, { ...KubeConfigMapList.GVK, ...props, @@ -2814,9 +2908,9 @@ export class KubeEndpoints extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.Endpoints" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "Endpoints", - }; + apiVersion: 'v1', + kind: 'Endpoints', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.Endpoints". @@ -2838,11 +2932,7 @@ export class KubeEndpoints extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeEndpointsProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeEndpointsProps = {}) { super(scope, id, { ...KubeEndpoints.GVK, ...props, @@ -2872,9 +2962,9 @@ export class KubeEndpointsList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.EndpointsList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "EndpointsList", - }; + apiVersion: 'v1', + kind: 'EndpointsList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.EndpointsList". @@ -2896,11 +2986,7 @@ export class KubeEndpointsList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeEndpointsListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeEndpointsListProps) { super(scope, id, { ...KubeEndpointsList.GVK, ...props, @@ -2930,9 +3016,9 @@ export class KubeEvent extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.events.v1.Event" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "events.k8s.io/v1", - kind: "Event", - }; + apiVersion: 'events.k8s.io/v1', + kind: 'Event', + } /** * Renders a Kubernetes manifest for "io.k8s.api.events.v1.Event". @@ -2984,9 +3070,9 @@ export class KubeEventList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.events.v1.EventList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "events.k8s.io/v1", - kind: "EventList", - }; + apiVersion: 'events.k8s.io/v1', + kind: 'EventList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.events.v1.EventList". @@ -3038,9 +3124,9 @@ export class KubeLimitRange extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.LimitRange" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "LimitRange", - }; + apiVersion: 'v1', + kind: 'LimitRange', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.LimitRange". @@ -3062,11 +3148,7 @@ export class KubeLimitRange extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeLimitRangeProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeLimitRangeProps = {}) { super(scope, id, { ...KubeLimitRange.GVK, ...props, @@ -3096,9 +3178,9 @@ export class KubeLimitRangeList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.LimitRangeList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "LimitRangeList", - }; + apiVersion: 'v1', + kind: 'LimitRangeList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.LimitRangeList". @@ -3120,11 +3202,7 @@ export class KubeLimitRangeList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeLimitRangeListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeLimitRangeListProps) { super(scope, id, { ...KubeLimitRangeList.GVK, ...props, @@ -3154,9 +3232,9 @@ export class KubeNamespace extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.Namespace" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "Namespace", - }; + apiVersion: 'v1', + kind: 'Namespace', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.Namespace". @@ -3178,11 +3256,7 @@ export class KubeNamespace extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeNamespaceProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeNamespaceProps = {}) { super(scope, id, { ...KubeNamespace.GVK, ...props, @@ -3212,9 +3286,9 @@ export class KubeNamespaceList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.NamespaceList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "NamespaceList", - }; + apiVersion: 'v1', + kind: 'NamespaceList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.NamespaceList". @@ -3236,11 +3310,7 @@ export class KubeNamespaceList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeNamespaceListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeNamespaceListProps) { super(scope, id, { ...KubeNamespaceList.GVK, ...props, @@ -3270,9 +3340,9 @@ export class KubeNode extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.Node" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "Node", - }; + apiVersion: 'v1', + kind: 'Node', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.Node". @@ -3324,9 +3394,9 @@ export class KubeNodeList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.NodeList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "NodeList", - }; + apiVersion: 'v1', + kind: 'NodeList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.NodeList". @@ -3378,9 +3448,9 @@ export class KubePersistentVolume extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.PersistentVolume" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "PersistentVolume", - }; + apiVersion: 'v1', + kind: 'PersistentVolume', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.PersistentVolume". @@ -3402,11 +3472,7 @@ export class KubePersistentVolume extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePersistentVolumeProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubePersistentVolumeProps = {}) { super(scope, id, { ...KubePersistentVolume.GVK, ...props, @@ -3436,9 +3502,9 @@ export class KubePersistentVolumeClaim extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.PersistentVolumeClaim" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "PersistentVolumeClaim", - }; + apiVersion: 'v1', + kind: 'PersistentVolumeClaim', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.PersistentVolumeClaim". @@ -3460,11 +3526,7 @@ export class KubePersistentVolumeClaim extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePersistentVolumeClaimProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubePersistentVolumeClaimProps = {}) { super(scope, id, { ...KubePersistentVolumeClaim.GVK, ...props, @@ -3494,9 +3556,9 @@ export class KubePersistentVolumeClaimList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.PersistentVolumeClaimList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "PersistentVolumeClaimList", - }; + apiVersion: 'v1', + kind: 'PersistentVolumeClaimList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.PersistentVolumeClaimList". @@ -3518,11 +3580,7 @@ export class KubePersistentVolumeClaimList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePersistentVolumeClaimListProps, - ) { + public constructor(scope: Construct, id: string, props: KubePersistentVolumeClaimListProps) { super(scope, id, { ...KubePersistentVolumeClaimList.GVK, ...props, @@ -3552,9 +3610,9 @@ export class KubePersistentVolumeList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.PersistentVolumeList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "PersistentVolumeList", - }; + apiVersion: 'v1', + kind: 'PersistentVolumeList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.PersistentVolumeList". @@ -3576,11 +3634,7 @@ export class KubePersistentVolumeList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePersistentVolumeListProps, - ) { + public constructor(scope: Construct, id: string, props: KubePersistentVolumeListProps) { super(scope, id, { ...KubePersistentVolumeList.GVK, ...props, @@ -3610,9 +3664,9 @@ export class KubePod extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.Pod" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "Pod", - }; + apiVersion: 'v1', + kind: 'Pod', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.Pod". @@ -3664,9 +3718,9 @@ export class KubePodList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.PodList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "PodList", - }; + apiVersion: 'v1', + kind: 'PodList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.PodList". @@ -3718,9 +3772,9 @@ export class KubePodTemplate extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.PodTemplate" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "PodTemplate", - }; + apiVersion: 'v1', + kind: 'PodTemplate', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.PodTemplate". @@ -3742,11 +3796,7 @@ export class KubePodTemplate extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePodTemplateProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubePodTemplateProps = {}) { super(scope, id, { ...KubePodTemplate.GVK, ...props, @@ -3776,9 +3826,9 @@ export class KubePodTemplateList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.PodTemplateList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "PodTemplateList", - }; + apiVersion: 'v1', + kind: 'PodTemplateList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.PodTemplateList". @@ -3800,11 +3850,7 @@ export class KubePodTemplateList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePodTemplateListProps, - ) { + public constructor(scope: Construct, id: string, props: KubePodTemplateListProps) { super(scope, id, { ...KubePodTemplateList.GVK, ...props, @@ -3834,9 +3880,9 @@ export class KubeReplicationController extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.ReplicationController" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "ReplicationController", - }; + apiVersion: 'v1', + kind: 'ReplicationController', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.ReplicationController". @@ -3858,11 +3904,7 @@ export class KubeReplicationController extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeReplicationControllerProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeReplicationControllerProps = {}) { super(scope, id, { ...KubeReplicationController.GVK, ...props, @@ -3892,9 +3934,9 @@ export class KubeReplicationControllerList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.ReplicationControllerList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "ReplicationControllerList", - }; + apiVersion: 'v1', + kind: 'ReplicationControllerList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.ReplicationControllerList". @@ -3916,11 +3958,7 @@ export class KubeReplicationControllerList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeReplicationControllerListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeReplicationControllerListProps) { super(scope, id, { ...KubeReplicationControllerList.GVK, ...props, @@ -3950,9 +3988,9 @@ export class KubeResourceQuota extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.ResourceQuota" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "ResourceQuota", - }; + apiVersion: 'v1', + kind: 'ResourceQuota', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.ResourceQuota". @@ -3974,11 +4012,7 @@ export class KubeResourceQuota extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeResourceQuotaProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeResourceQuotaProps = {}) { super(scope, id, { ...KubeResourceQuota.GVK, ...props, @@ -4008,9 +4042,9 @@ export class KubeResourceQuotaList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.ResourceQuotaList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "ResourceQuotaList", - }; + apiVersion: 'v1', + kind: 'ResourceQuotaList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.ResourceQuotaList". @@ -4032,11 +4066,7 @@ export class KubeResourceQuotaList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeResourceQuotaListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeResourceQuotaListProps) { super(scope, id, { ...KubeResourceQuotaList.GVK, ...props, @@ -4066,9 +4096,9 @@ export class KubeSecret extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.Secret" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "Secret", - }; + apiVersion: 'v1', + kind: 'Secret', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.Secret". @@ -4090,11 +4120,7 @@ export class KubeSecret extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeSecretProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeSecretProps = {}) { super(scope, id, { ...KubeSecret.GVK, ...props, @@ -4124,9 +4150,9 @@ export class KubeSecretList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.SecretList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "SecretList", - }; + apiVersion: 'v1', + kind: 'SecretList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.SecretList". @@ -4178,9 +4204,9 @@ export class KubeService extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.Service" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "Service", - }; + apiVersion: 'v1', + kind: 'Service', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.Service". @@ -4202,11 +4228,7 @@ export class KubeService extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeServiceProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeServiceProps = {}) { super(scope, id, { ...KubeService.GVK, ...props, @@ -4236,9 +4258,9 @@ export class KubeServiceAccount extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.ServiceAccount" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "ServiceAccount", - }; + apiVersion: 'v1', + kind: 'ServiceAccount', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.ServiceAccount". @@ -4260,11 +4282,7 @@ export class KubeServiceAccount extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeServiceAccountProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeServiceAccountProps = {}) { super(scope, id, { ...KubeServiceAccount.GVK, ...props, @@ -4294,9 +4312,9 @@ export class KubeServiceAccountList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.ServiceAccountList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "ServiceAccountList", - }; + apiVersion: 'v1', + kind: 'ServiceAccountList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.ServiceAccountList". @@ -4318,11 +4336,7 @@ export class KubeServiceAccountList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeServiceAccountListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeServiceAccountListProps) { super(scope, id, { ...KubeServiceAccountList.GVK, ...props, @@ -4352,9 +4366,9 @@ export class KubeServiceList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.core.v1.ServiceList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "ServiceList", - }; + apiVersion: 'v1', + kind: 'ServiceList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.core.v1.ServiceList". @@ -4376,11 +4390,7 @@ export class KubeServiceList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeServiceListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeServiceListProps) { super(scope, id, { ...KubeServiceList.GVK, ...props, @@ -4410,9 +4420,9 @@ export class KubeEndpointSlice extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.discovery.v1.EndpointSlice" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "discovery.k8s.io/v1", - kind: "EndpointSlice", - }; + apiVersion: 'discovery.k8s.io/v1', + kind: 'EndpointSlice', + } /** * Renders a Kubernetes manifest for "io.k8s.api.discovery.v1.EndpointSlice". @@ -4434,11 +4444,7 @@ export class KubeEndpointSlice extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeEndpointSliceProps, - ) { + public constructor(scope: Construct, id: string, props: KubeEndpointSliceProps) { super(scope, id, { ...KubeEndpointSlice.GVK, ...props, @@ -4468,9 +4474,9 @@ export class KubeEndpointSliceList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.discovery.v1.EndpointSliceList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "discovery.k8s.io/v1", - kind: "EndpointSliceList", - }; + apiVersion: 'discovery.k8s.io/v1', + kind: 'EndpointSliceList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.discovery.v1.EndpointSliceList". @@ -4492,11 +4498,7 @@ export class KubeEndpointSliceList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeEndpointSliceListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeEndpointSliceListProps) { super(scope, id, { ...KubeEndpointSliceList.GVK, ...props, @@ -4519,44 +4521,40 @@ export class KubeEndpointSliceList extends ApiObject { /** * FlowSchema defines the schema of a group of flows. Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a "flow distinguisher". * - * @schema io.k8s.api.flowcontrol.v1beta2.FlowSchema + * @schema io.k8s.api.flowcontrol.v1.FlowSchema */ -export class KubeFlowSchemaV1Beta2 extends ApiObject { +export class KubeFlowSchema extends ApiObject { /** - * Returns the apiVersion and kind for "io.k8s.api.flowcontrol.v1beta2.FlowSchema" + * Returns the apiVersion and kind for "io.k8s.api.flowcontrol.v1.FlowSchema" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "flowcontrol.apiserver.k8s.io/v1beta2", - kind: "FlowSchema", - }; + apiVersion: 'flowcontrol.apiserver.k8s.io/v1', + kind: 'FlowSchema', + } /** - * Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta2.FlowSchema". + * Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1.FlowSchema". * * This can be used to inline resource manifests inside other objects (e.g. as templates). * * @param props initialization props */ - public static manifest(props: KubeFlowSchemaV1Beta2Props = {}): any { + public static manifest(props: KubeFlowSchemaProps = {}): any { return { - ...KubeFlowSchemaV1Beta2.GVK, - ...toJson_KubeFlowSchemaV1Beta2Props(props), + ...KubeFlowSchema.GVK, + ...toJson_KubeFlowSchemaProps(props), }; } /** - * Defines a "io.k8s.api.flowcontrol.v1beta2.FlowSchema" API object + * Defines a "io.k8s.api.flowcontrol.v1.FlowSchema" API object * @param scope the scope in which to define this object * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeFlowSchemaV1Beta2Props = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeFlowSchemaProps = {}) { super(scope, id, { - ...KubeFlowSchemaV1Beta2.GVK, + ...KubeFlowSchema.GVK, ...props, }); } @@ -4568,8 +4566,8 @@ export class KubeFlowSchemaV1Beta2 extends ApiObject { const resolved = super.toJson(); return { - ...KubeFlowSchemaV1Beta2.GVK, - ...toJson_KubeFlowSchemaV1Beta2Props(resolved), + ...KubeFlowSchema.GVK, + ...toJson_KubeFlowSchemaProps(resolved), }; } } @@ -4577,44 +4575,40 @@ export class KubeFlowSchemaV1Beta2 extends ApiObject { /** * FlowSchemaList is a list of FlowSchema objects. * - * @schema io.k8s.api.flowcontrol.v1beta2.FlowSchemaList + * @schema io.k8s.api.flowcontrol.v1.FlowSchemaList */ -export class KubeFlowSchemaListV1Beta2 extends ApiObject { +export class KubeFlowSchemaList extends ApiObject { /** - * Returns the apiVersion and kind for "io.k8s.api.flowcontrol.v1beta2.FlowSchemaList" + * Returns the apiVersion and kind for "io.k8s.api.flowcontrol.v1.FlowSchemaList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "flowcontrol.apiserver.k8s.io/v1beta2", - kind: "FlowSchemaList", - }; + apiVersion: 'flowcontrol.apiserver.k8s.io/v1', + kind: 'FlowSchemaList', + } /** - * Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta2.FlowSchemaList". + * Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1.FlowSchemaList". * * This can be used to inline resource manifests inside other objects (e.g. as templates). * * @param props initialization props */ - public static manifest(props: KubeFlowSchemaListV1Beta2Props): any { + public static manifest(props: KubeFlowSchemaListProps): any { return { - ...KubeFlowSchemaListV1Beta2.GVK, - ...toJson_KubeFlowSchemaListV1Beta2Props(props), + ...KubeFlowSchemaList.GVK, + ...toJson_KubeFlowSchemaListProps(props), }; } /** - * Defines a "io.k8s.api.flowcontrol.v1beta2.FlowSchemaList" API object + * Defines a "io.k8s.api.flowcontrol.v1.FlowSchemaList" API object * @param scope the scope in which to define this object * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeFlowSchemaListV1Beta2Props, - ) { + public constructor(scope: Construct, id: string, props: KubeFlowSchemaListProps) { super(scope, id, { - ...KubeFlowSchemaListV1Beta2.GVK, + ...KubeFlowSchemaList.GVK, ...props, }); } @@ -4626,8 +4620,8 @@ export class KubeFlowSchemaListV1Beta2 extends ApiObject { const resolved = super.toJson(); return { - ...KubeFlowSchemaListV1Beta2.GVK, - ...toJson_KubeFlowSchemaListV1Beta2Props(resolved), + ...KubeFlowSchemaList.GVK, + ...toJson_KubeFlowSchemaListProps(resolved), }; } } @@ -4635,46 +4629,40 @@ export class KubeFlowSchemaListV1Beta2 extends ApiObject { /** * PriorityLevelConfiguration represents the configuration of a priority level. * - * @schema io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration + * @schema io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration */ -export class KubePriorityLevelConfigurationV1Beta2 extends ApiObject { +export class KubePriorityLevelConfiguration extends ApiObject { /** - * Returns the apiVersion and kind for "io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" + * Returns the apiVersion and kind for "io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "flowcontrol.apiserver.k8s.io/v1beta2", - kind: "PriorityLevelConfiguration", - }; + apiVersion: 'flowcontrol.apiserver.k8s.io/v1', + kind: 'PriorityLevelConfiguration', + } /** - * Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration". + * Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration". * * This can be used to inline resource manifests inside other objects (e.g. as templates). * * @param props initialization props */ - public static manifest( - props: KubePriorityLevelConfigurationV1Beta2Props = {}, - ): any { + public static manifest(props: KubePriorityLevelConfigurationProps = {}): any { return { - ...KubePriorityLevelConfigurationV1Beta2.GVK, - ...toJson_KubePriorityLevelConfigurationV1Beta2Props(props), + ...KubePriorityLevelConfiguration.GVK, + ...toJson_KubePriorityLevelConfigurationProps(props), }; } /** - * Defines a "io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration" API object + * Defines a "io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration" API object * @param scope the scope in which to define this object * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePriorityLevelConfigurationV1Beta2Props = {}, - ) { + public constructor(scope: Construct, id: string, props: KubePriorityLevelConfigurationProps = {}) { super(scope, id, { - ...KubePriorityLevelConfigurationV1Beta2.GVK, + ...KubePriorityLevelConfiguration.GVK, ...props, }); } @@ -4686,8 +4674,8 @@ export class KubePriorityLevelConfigurationV1Beta2 extends ApiObject { const resolved = super.toJson(); return { - ...KubePriorityLevelConfigurationV1Beta2.GVK, - ...toJson_KubePriorityLevelConfigurationV1Beta2Props(resolved), + ...KubePriorityLevelConfiguration.GVK, + ...toJson_KubePriorityLevelConfigurationProps(resolved), }; } } @@ -4695,46 +4683,40 @@ export class KubePriorityLevelConfigurationV1Beta2 extends ApiObject { /** * PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects. * - * @schema io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationList + * @schema io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList */ -export class KubePriorityLevelConfigurationListV1Beta2 extends ApiObject { +export class KubePriorityLevelConfigurationList extends ApiObject { /** - * Returns the apiVersion and kind for "io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationList" + * Returns the apiVersion and kind for "io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "flowcontrol.apiserver.k8s.io/v1beta2", - kind: "PriorityLevelConfigurationList", - }; + apiVersion: 'flowcontrol.apiserver.k8s.io/v1', + kind: 'PriorityLevelConfigurationList', + } /** - * Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationList". + * Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList". * * This can be used to inline resource manifests inside other objects (e.g. as templates). * * @param props initialization props */ - public static manifest( - props: KubePriorityLevelConfigurationListV1Beta2Props, - ): any { + public static manifest(props: KubePriorityLevelConfigurationListProps): any { return { - ...KubePriorityLevelConfigurationListV1Beta2.GVK, - ...toJson_KubePriorityLevelConfigurationListV1Beta2Props(props), + ...KubePriorityLevelConfigurationList.GVK, + ...toJson_KubePriorityLevelConfigurationListProps(props), }; } /** - * Defines a "io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationList" API object + * Defines a "io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList" API object * @param scope the scope in which to define this object * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePriorityLevelConfigurationListV1Beta2Props, - ) { + public constructor(scope: Construct, id: string, props: KubePriorityLevelConfigurationListProps) { super(scope, id, { - ...KubePriorityLevelConfigurationListV1Beta2.GVK, + ...KubePriorityLevelConfigurationList.GVK, ...props, }); } @@ -4746,8 +4728,8 @@ export class KubePriorityLevelConfigurationListV1Beta2 extends ApiObject { const resolved = super.toJson(); return { - ...KubePriorityLevelConfigurationListV1Beta2.GVK, - ...toJson_KubePriorityLevelConfigurationListV1Beta2Props(resolved), + ...KubePriorityLevelConfigurationList.GVK, + ...toJson_KubePriorityLevelConfigurationListProps(resolved), }; } } @@ -4762,9 +4744,9 @@ export class KubeFlowSchemaV1Beta3 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.flowcontrol.v1beta3.FlowSchema" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "flowcontrol.apiserver.k8s.io/v1beta3", - kind: "FlowSchema", - }; + apiVersion: 'flowcontrol.apiserver.k8s.io/v1beta3', + kind: 'FlowSchema', + } /** * Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta3.FlowSchema". @@ -4786,11 +4768,7 @@ export class KubeFlowSchemaV1Beta3 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeFlowSchemaV1Beta3Props = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeFlowSchemaV1Beta3Props = {}) { super(scope, id, { ...KubeFlowSchemaV1Beta3.GVK, ...props, @@ -4820,9 +4798,9 @@ export class KubeFlowSchemaListV1Beta3 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.flowcontrol.v1beta3.FlowSchemaList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "flowcontrol.apiserver.k8s.io/v1beta3", - kind: "FlowSchemaList", - }; + apiVersion: 'flowcontrol.apiserver.k8s.io/v1beta3', + kind: 'FlowSchemaList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta3.FlowSchemaList". @@ -4844,11 +4822,7 @@ export class KubeFlowSchemaListV1Beta3 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeFlowSchemaListV1Beta3Props, - ) { + public constructor(scope: Construct, id: string, props: KubeFlowSchemaListV1Beta3Props) { super(scope, id, { ...KubeFlowSchemaListV1Beta3.GVK, ...props, @@ -4878,9 +4852,9 @@ export class KubePriorityLevelConfigurationV1Beta3 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "flowcontrol.apiserver.k8s.io/v1beta3", - kind: "PriorityLevelConfiguration", - }; + apiVersion: 'flowcontrol.apiserver.k8s.io/v1beta3', + kind: 'PriorityLevelConfiguration', + } /** * Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration". @@ -4889,9 +4863,7 @@ export class KubePriorityLevelConfigurationV1Beta3 extends ApiObject { * * @param props initialization props */ - public static manifest( - props: KubePriorityLevelConfigurationV1Beta3Props = {}, - ): any { + public static manifest(props: KubePriorityLevelConfigurationV1Beta3Props = {}): any { return { ...KubePriorityLevelConfigurationV1Beta3.GVK, ...toJson_KubePriorityLevelConfigurationV1Beta3Props(props), @@ -4904,11 +4876,7 @@ export class KubePriorityLevelConfigurationV1Beta3 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePriorityLevelConfigurationV1Beta3Props = {}, - ) { + public constructor(scope: Construct, id: string, props: KubePriorityLevelConfigurationV1Beta3Props = {}) { super(scope, id, { ...KubePriorityLevelConfigurationV1Beta3.GVK, ...props, @@ -4938,9 +4906,9 @@ export class KubePriorityLevelConfigurationListV1Beta3 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "flowcontrol.apiserver.k8s.io/v1beta3", - kind: "PriorityLevelConfigurationList", - }; + apiVersion: 'flowcontrol.apiserver.k8s.io/v1beta3', + kind: 'PriorityLevelConfigurationList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationList". @@ -4949,9 +4917,7 @@ export class KubePriorityLevelConfigurationListV1Beta3 extends ApiObject { * * @param props initialization props */ - public static manifest( - props: KubePriorityLevelConfigurationListV1Beta3Props, - ): any { + public static manifest(props: KubePriorityLevelConfigurationListV1Beta3Props): any { return { ...KubePriorityLevelConfigurationListV1Beta3.GVK, ...toJson_KubePriorityLevelConfigurationListV1Beta3Props(props), @@ -4964,11 +4930,7 @@ export class KubePriorityLevelConfigurationListV1Beta3 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePriorityLevelConfigurationListV1Beta3Props, - ) { + public constructor(scope: Construct, id: string, props: KubePriorityLevelConfigurationListV1Beta3Props) { super(scope, id, { ...KubePriorityLevelConfigurationListV1Beta3.GVK, ...props, @@ -4998,9 +4960,9 @@ export class KubeIngress extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.networking.v1.Ingress" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "networking.k8s.io/v1", - kind: "Ingress", - }; + apiVersion: 'networking.k8s.io/v1', + kind: 'Ingress', + } /** * Renders a Kubernetes manifest for "io.k8s.api.networking.v1.Ingress". @@ -5022,11 +4984,7 @@ export class KubeIngress extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeIngressProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeIngressProps = {}) { super(scope, id, { ...KubeIngress.GVK, ...props, @@ -5056,9 +5014,9 @@ export class KubeIngressClass extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.networking.v1.IngressClass" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "networking.k8s.io/v1", - kind: "IngressClass", - }; + apiVersion: 'networking.k8s.io/v1', + kind: 'IngressClass', + } /** * Renders a Kubernetes manifest for "io.k8s.api.networking.v1.IngressClass". @@ -5080,11 +5038,7 @@ export class KubeIngressClass extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeIngressClassProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeIngressClassProps = {}) { super(scope, id, { ...KubeIngressClass.GVK, ...props, @@ -5114,9 +5068,9 @@ export class KubeIngressClassList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.networking.v1.IngressClassList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "networking.k8s.io/v1", - kind: "IngressClassList", - }; + apiVersion: 'networking.k8s.io/v1', + kind: 'IngressClassList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.networking.v1.IngressClassList". @@ -5138,11 +5092,7 @@ export class KubeIngressClassList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeIngressClassListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeIngressClassListProps) { super(scope, id, { ...KubeIngressClassList.GVK, ...props, @@ -5172,9 +5122,9 @@ export class KubeIngressList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.networking.v1.IngressList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "networking.k8s.io/v1", - kind: "IngressList", - }; + apiVersion: 'networking.k8s.io/v1', + kind: 'IngressList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.networking.v1.IngressList". @@ -5196,11 +5146,7 @@ export class KubeIngressList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeIngressListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeIngressListProps) { super(scope, id, { ...KubeIngressList.GVK, ...props, @@ -5230,9 +5176,9 @@ export class KubeNetworkPolicy extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.networking.v1.NetworkPolicy" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "networking.k8s.io/v1", - kind: "NetworkPolicy", - }; + apiVersion: 'networking.k8s.io/v1', + kind: 'NetworkPolicy', + } /** * Renders a Kubernetes manifest for "io.k8s.api.networking.v1.NetworkPolicy". @@ -5254,11 +5200,7 @@ export class KubeNetworkPolicy extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeNetworkPolicyProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeNetworkPolicyProps = {}) { super(scope, id, { ...KubeNetworkPolicy.GVK, ...props, @@ -5288,9 +5230,9 @@ export class KubeNetworkPolicyList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.networking.v1.NetworkPolicyList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "networking.k8s.io/v1", - kind: "NetworkPolicyList", - }; + apiVersion: 'networking.k8s.io/v1', + kind: 'NetworkPolicyList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.networking.v1.NetworkPolicyList". @@ -5312,11 +5254,7 @@ export class KubeNetworkPolicyList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeNetworkPolicyListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeNetworkPolicyListProps) { super(scope, id, { ...KubeNetworkPolicyList.GVK, ...props, @@ -5337,46 +5275,42 @@ export class KubeNetworkPolicyList extends ApiObject { } /** - * ClusterCIDR represents a single configuration for per-Node Pod CIDR allocations when the MultiCIDRRangeAllocator is enabled (see the config for kube-controller-manager). A cluster may have any number of ClusterCIDR resources, all of which will be considered when allocating a CIDR for a Node. A ClusterCIDR is eligible to be used for a given Node when the node selector matches the node in question and has free CIDRs to allocate. In case of multiple matching ClusterCIDR resources, the allocator will attempt to break ties using internal heuristics, but any ClusterCIDR whose node selector matches the Node may be used. + * IPAddress represents a single IP of a single IP Family. The object is designed to be used by APIs that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses. An IP address can be represented in different formats, to guarantee the uniqueness of the IP, the name of the object is the IP address in canonical format, four decimal digits separated by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6. Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Invalid: 10.01.2.3 or 2001:db8:0:0:0::1 * - * @schema io.k8s.api.networking.v1alpha1.ClusterCIDR + * @schema io.k8s.api.networking.v1alpha1.IPAddress */ -export class KubeClusterCidrv1Alpha1 extends ApiObject { +export class KubeIpAddressV1Alpha1 extends ApiObject { /** - * Returns the apiVersion and kind for "io.k8s.api.networking.v1alpha1.ClusterCIDR" + * Returns the apiVersion and kind for "io.k8s.api.networking.v1alpha1.IPAddress" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "networking.k8s.io/v1alpha1", - kind: "ClusterCIDR", - }; + apiVersion: 'networking.k8s.io/v1alpha1', + kind: 'IPAddress', + } /** - * Renders a Kubernetes manifest for "io.k8s.api.networking.v1alpha1.ClusterCIDR". + * Renders a Kubernetes manifest for "io.k8s.api.networking.v1alpha1.IPAddress". * * This can be used to inline resource manifests inside other objects (e.g. as templates). * * @param props initialization props */ - public static manifest(props: KubeClusterCidrv1Alpha1Props = {}): any { + public static manifest(props: KubeIpAddressV1Alpha1Props = {}): any { return { - ...KubeClusterCidrv1Alpha1.GVK, - ...toJson_KubeClusterCidrv1Alpha1Props(props), + ...KubeIpAddressV1Alpha1.GVK, + ...toJson_KubeIpAddressV1Alpha1Props(props), }; } /** - * Defines a "io.k8s.api.networking.v1alpha1.ClusterCIDR" API object + * Defines a "io.k8s.api.networking.v1alpha1.IPAddress" API object * @param scope the scope in which to define this object * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeClusterCidrv1Alpha1Props = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeIpAddressV1Alpha1Props = {}) { super(scope, id, { - ...KubeClusterCidrv1Alpha1.GVK, + ...KubeIpAddressV1Alpha1.GVK, ...props, }); } @@ -5388,53 +5322,49 @@ export class KubeClusterCidrv1Alpha1 extends ApiObject { const resolved = super.toJson(); return { - ...KubeClusterCidrv1Alpha1.GVK, - ...toJson_KubeClusterCidrv1Alpha1Props(resolved), + ...KubeIpAddressV1Alpha1.GVK, + ...toJson_KubeIpAddressV1Alpha1Props(resolved), }; } } /** - * ClusterCIDRList contains a list of ClusterCIDR. + * IPAddressList contains a list of IPAddress. * - * @schema io.k8s.api.networking.v1alpha1.ClusterCIDRList + * @schema io.k8s.api.networking.v1alpha1.IPAddressList */ -export class KubeClusterCidrListV1Alpha1 extends ApiObject { +export class KubeIpAddressListV1Alpha1 extends ApiObject { /** - * Returns the apiVersion and kind for "io.k8s.api.networking.v1alpha1.ClusterCIDRList" + * Returns the apiVersion and kind for "io.k8s.api.networking.v1alpha1.IPAddressList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "networking.k8s.io/v1alpha1", - kind: "ClusterCIDRList", - }; + apiVersion: 'networking.k8s.io/v1alpha1', + kind: 'IPAddressList', + } /** - * Renders a Kubernetes manifest for "io.k8s.api.networking.v1alpha1.ClusterCIDRList". + * Renders a Kubernetes manifest for "io.k8s.api.networking.v1alpha1.IPAddressList". * * This can be used to inline resource manifests inside other objects (e.g. as templates). * * @param props initialization props */ - public static manifest(props: KubeClusterCidrListV1Alpha1Props): any { + public static manifest(props: KubeIpAddressListV1Alpha1Props): any { return { - ...KubeClusterCidrListV1Alpha1.GVK, - ...toJson_KubeClusterCidrListV1Alpha1Props(props), + ...KubeIpAddressListV1Alpha1.GVK, + ...toJson_KubeIpAddressListV1Alpha1Props(props), }; } /** - * Defines a "io.k8s.api.networking.v1alpha1.ClusterCIDRList" API object + * Defines a "io.k8s.api.networking.v1alpha1.IPAddressList" API object * @param scope the scope in which to define this object * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeClusterCidrListV1Alpha1Props, - ) { + public constructor(scope: Construct, id: string, props: KubeIpAddressListV1Alpha1Props) { super(scope, id, { - ...KubeClusterCidrListV1Alpha1.GVK, + ...KubeIpAddressListV1Alpha1.GVK, ...props, }); } @@ -5446,53 +5376,49 @@ export class KubeClusterCidrListV1Alpha1 extends ApiObject { const resolved = super.toJson(); return { - ...KubeClusterCidrListV1Alpha1.GVK, - ...toJson_KubeClusterCidrListV1Alpha1Props(resolved), + ...KubeIpAddressListV1Alpha1.GVK, + ...toJson_KubeIpAddressListV1Alpha1Props(resolved), }; } } /** - * IPAddress represents a single IP of a single IP Family. The object is designed to be used by APIs that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses. An IP address can be represented in different formats, to guarantee the uniqueness of the IP, the name of the object is the IP address in canonical format, four decimal digits separated by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6. Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Invalid: 10.01.2.3 or 2001:db8:0:0:0::1 + * ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64). This range is used to allocate ClusterIPs to Service objects. * - * @schema io.k8s.api.networking.v1alpha1.IPAddress + * @schema io.k8s.api.networking.v1alpha1.ServiceCIDR */ -export class KubeIpAddressV1Alpha1 extends ApiObject { +export class KubeServiceCidrv1Alpha1 extends ApiObject { /** - * Returns the apiVersion and kind for "io.k8s.api.networking.v1alpha1.IPAddress" + * Returns the apiVersion and kind for "io.k8s.api.networking.v1alpha1.ServiceCIDR" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "networking.k8s.io/v1alpha1", - kind: "IPAddress", - }; + apiVersion: 'networking.k8s.io/v1alpha1', + kind: 'ServiceCIDR', + } /** - * Renders a Kubernetes manifest for "io.k8s.api.networking.v1alpha1.IPAddress". + * Renders a Kubernetes manifest for "io.k8s.api.networking.v1alpha1.ServiceCIDR". * * This can be used to inline resource manifests inside other objects (e.g. as templates). * * @param props initialization props */ - public static manifest(props: KubeIpAddressV1Alpha1Props = {}): any { + public static manifest(props: KubeServiceCidrv1Alpha1Props = {}): any { return { - ...KubeIpAddressV1Alpha1.GVK, - ...toJson_KubeIpAddressV1Alpha1Props(props), + ...KubeServiceCidrv1Alpha1.GVK, + ...toJson_KubeServiceCidrv1Alpha1Props(props), }; } /** - * Defines a "io.k8s.api.networking.v1alpha1.IPAddress" API object + * Defines a "io.k8s.api.networking.v1alpha1.ServiceCIDR" API object * @param scope the scope in which to define this object * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeIpAddressV1Alpha1Props = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeServiceCidrv1Alpha1Props = {}) { super(scope, id, { - ...KubeIpAddressV1Alpha1.GVK, + ...KubeServiceCidrv1Alpha1.GVK, ...props, }); } @@ -5504,53 +5430,49 @@ export class KubeIpAddressV1Alpha1 extends ApiObject { const resolved = super.toJson(); return { - ...KubeIpAddressV1Alpha1.GVK, - ...toJson_KubeIpAddressV1Alpha1Props(resolved), + ...KubeServiceCidrv1Alpha1.GVK, + ...toJson_KubeServiceCidrv1Alpha1Props(resolved), }; } } /** - * IPAddressList contains a list of IPAddress. + * ServiceCIDRList contains a list of ServiceCIDR objects. * - * @schema io.k8s.api.networking.v1alpha1.IPAddressList + * @schema io.k8s.api.networking.v1alpha1.ServiceCIDRList */ -export class KubeIpAddressListV1Alpha1 extends ApiObject { +export class KubeServiceCidrListV1Alpha1 extends ApiObject { /** - * Returns the apiVersion and kind for "io.k8s.api.networking.v1alpha1.IPAddressList" + * Returns the apiVersion and kind for "io.k8s.api.networking.v1alpha1.ServiceCIDRList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "networking.k8s.io/v1alpha1", - kind: "IPAddressList", - }; + apiVersion: 'networking.k8s.io/v1alpha1', + kind: 'ServiceCIDRList', + } /** - * Renders a Kubernetes manifest for "io.k8s.api.networking.v1alpha1.IPAddressList". + * Renders a Kubernetes manifest for "io.k8s.api.networking.v1alpha1.ServiceCIDRList". * * This can be used to inline resource manifests inside other objects (e.g. as templates). * * @param props initialization props */ - public static manifest(props: KubeIpAddressListV1Alpha1Props): any { + public static manifest(props: KubeServiceCidrListV1Alpha1Props): any { return { - ...KubeIpAddressListV1Alpha1.GVK, - ...toJson_KubeIpAddressListV1Alpha1Props(props), + ...KubeServiceCidrListV1Alpha1.GVK, + ...toJson_KubeServiceCidrListV1Alpha1Props(props), }; } /** - * Defines a "io.k8s.api.networking.v1alpha1.IPAddressList" API object + * Defines a "io.k8s.api.networking.v1alpha1.ServiceCIDRList" API object * @param scope the scope in which to define this object * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeIpAddressListV1Alpha1Props, - ) { + public constructor(scope: Construct, id: string, props: KubeServiceCidrListV1Alpha1Props) { super(scope, id, { - ...KubeIpAddressListV1Alpha1.GVK, + ...KubeServiceCidrListV1Alpha1.GVK, ...props, }); } @@ -5562,8 +5484,8 @@ export class KubeIpAddressListV1Alpha1 extends ApiObject { const resolved = super.toJson(); return { - ...KubeIpAddressListV1Alpha1.GVK, - ...toJson_KubeIpAddressListV1Alpha1Props(resolved), + ...KubeServiceCidrListV1Alpha1.GVK, + ...toJson_KubeServiceCidrListV1Alpha1Props(resolved), }; } } @@ -5578,9 +5500,9 @@ export class KubeRuntimeClass extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.node.v1.RuntimeClass" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "node.k8s.io/v1", - kind: "RuntimeClass", - }; + apiVersion: 'node.k8s.io/v1', + kind: 'RuntimeClass', + } /** * Renders a Kubernetes manifest for "io.k8s.api.node.v1.RuntimeClass". @@ -5602,11 +5524,7 @@ export class KubeRuntimeClass extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeRuntimeClassProps, - ) { + public constructor(scope: Construct, id: string, props: KubeRuntimeClassProps) { super(scope, id, { ...KubeRuntimeClass.GVK, ...props, @@ -5636,9 +5554,9 @@ export class KubeRuntimeClassList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.node.v1.RuntimeClassList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "node.k8s.io/v1", - kind: "RuntimeClassList", - }; + apiVersion: 'node.k8s.io/v1', + kind: 'RuntimeClassList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.node.v1.RuntimeClassList". @@ -5660,11 +5578,7 @@ export class KubeRuntimeClassList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeRuntimeClassListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeRuntimeClassListProps) { super(scope, id, { ...KubeRuntimeClassList.GVK, ...props, @@ -5694,9 +5608,9 @@ export class KubeEviction extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.policy.v1.Eviction" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "policy/v1", - kind: "Eviction", - }; + apiVersion: 'policy/v1', + kind: 'Eviction', + } /** * Renders a Kubernetes manifest for "io.k8s.api.policy.v1.Eviction". @@ -5718,11 +5632,7 @@ export class KubeEviction extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeEvictionProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeEvictionProps = {}) { super(scope, id, { ...KubeEviction.GVK, ...props, @@ -5752,9 +5662,9 @@ export class KubePodDisruptionBudget extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.policy.v1.PodDisruptionBudget" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "policy/v1", - kind: "PodDisruptionBudget", - }; + apiVersion: 'policy/v1', + kind: 'PodDisruptionBudget', + } /** * Renders a Kubernetes manifest for "io.k8s.api.policy.v1.PodDisruptionBudget". @@ -5776,11 +5686,7 @@ export class KubePodDisruptionBudget extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePodDisruptionBudgetProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubePodDisruptionBudgetProps = {}) { super(scope, id, { ...KubePodDisruptionBudget.GVK, ...props, @@ -5810,9 +5716,9 @@ export class KubePodDisruptionBudgetList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.policy.v1.PodDisruptionBudgetList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "policy/v1", - kind: "PodDisruptionBudgetList", - }; + apiVersion: 'policy/v1', + kind: 'PodDisruptionBudgetList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.policy.v1.PodDisruptionBudgetList". @@ -5834,11 +5740,7 @@ export class KubePodDisruptionBudgetList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePodDisruptionBudgetListProps, - ) { + public constructor(scope: Construct, id: string, props: KubePodDisruptionBudgetListProps) { super(scope, id, { ...KubePodDisruptionBudgetList.GVK, ...props, @@ -5868,9 +5770,9 @@ export class KubeClusterRole extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.rbac.v1.ClusterRole" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "rbac.authorization.k8s.io/v1", - kind: "ClusterRole", - }; + apiVersion: 'rbac.authorization.k8s.io/v1', + kind: 'ClusterRole', + } /** * Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.ClusterRole". @@ -5892,11 +5794,7 @@ export class KubeClusterRole extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeClusterRoleProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeClusterRoleProps = {}) { super(scope, id, { ...KubeClusterRole.GVK, ...props, @@ -5926,9 +5824,9 @@ export class KubeClusterRoleBinding extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.rbac.v1.ClusterRoleBinding" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "rbac.authorization.k8s.io/v1", - kind: "ClusterRoleBinding", - }; + apiVersion: 'rbac.authorization.k8s.io/v1', + kind: 'ClusterRoleBinding', + } /** * Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.ClusterRoleBinding". @@ -5950,11 +5848,7 @@ export class KubeClusterRoleBinding extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeClusterRoleBindingProps, - ) { + public constructor(scope: Construct, id: string, props: KubeClusterRoleBindingProps) { super(scope, id, { ...KubeClusterRoleBinding.GVK, ...props, @@ -5984,9 +5878,9 @@ export class KubeClusterRoleBindingList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.rbac.v1.ClusterRoleBindingList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "rbac.authorization.k8s.io/v1", - kind: "ClusterRoleBindingList", - }; + apiVersion: 'rbac.authorization.k8s.io/v1', + kind: 'ClusterRoleBindingList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.ClusterRoleBindingList". @@ -6008,11 +5902,7 @@ export class KubeClusterRoleBindingList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeClusterRoleBindingListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeClusterRoleBindingListProps) { super(scope, id, { ...KubeClusterRoleBindingList.GVK, ...props, @@ -6042,9 +5932,9 @@ export class KubeClusterRoleList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.rbac.v1.ClusterRoleList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "rbac.authorization.k8s.io/v1", - kind: "ClusterRoleList", - }; + apiVersion: 'rbac.authorization.k8s.io/v1', + kind: 'ClusterRoleList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.ClusterRoleList". @@ -6066,11 +5956,7 @@ export class KubeClusterRoleList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeClusterRoleListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeClusterRoleListProps) { super(scope, id, { ...KubeClusterRoleList.GVK, ...props, @@ -6100,9 +5986,9 @@ export class KubeRole extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.rbac.v1.Role" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "rbac.authorization.k8s.io/v1", - kind: "Role", - }; + apiVersion: 'rbac.authorization.k8s.io/v1', + kind: 'Role', + } /** * Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.Role". @@ -6154,9 +6040,9 @@ export class KubeRoleBinding extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.rbac.v1.RoleBinding" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "rbac.authorization.k8s.io/v1", - kind: "RoleBinding", - }; + apiVersion: 'rbac.authorization.k8s.io/v1', + kind: 'RoleBinding', + } /** * Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.RoleBinding". @@ -6178,11 +6064,7 @@ export class KubeRoleBinding extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeRoleBindingProps, - ) { + public constructor(scope: Construct, id: string, props: KubeRoleBindingProps) { super(scope, id, { ...KubeRoleBinding.GVK, ...props, @@ -6212,9 +6094,9 @@ export class KubeRoleBindingList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.rbac.v1.RoleBindingList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "rbac.authorization.k8s.io/v1", - kind: "RoleBindingList", - }; + apiVersion: 'rbac.authorization.k8s.io/v1', + kind: 'RoleBindingList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.RoleBindingList". @@ -6236,11 +6118,7 @@ export class KubeRoleBindingList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeRoleBindingListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeRoleBindingListProps) { super(scope, id, { ...KubeRoleBindingList.GVK, ...props, @@ -6270,9 +6148,9 @@ export class KubeRoleList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.rbac.v1.RoleList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "rbac.authorization.k8s.io/v1", - kind: "RoleList", - }; + apiVersion: 'rbac.authorization.k8s.io/v1', + kind: 'RoleList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.rbac.v1.RoleList". @@ -6326,9 +6204,9 @@ export class KubePodSchedulingContextV1Alpha2 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.resource.v1alpha2.PodSchedulingContext" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "resource.k8s.io/v1alpha2", - kind: "PodSchedulingContext", - }; + apiVersion: 'resource.k8s.io/v1alpha2', + kind: 'PodSchedulingContext', + } /** * Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha2.PodSchedulingContext". @@ -6350,11 +6228,7 @@ export class KubePodSchedulingContextV1Alpha2 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePodSchedulingContextV1Alpha2Props, - ) { + public constructor(scope: Construct, id: string, props: KubePodSchedulingContextV1Alpha2Props) { super(scope, id, { ...KubePodSchedulingContextV1Alpha2.GVK, ...props, @@ -6384,9 +6258,9 @@ export class KubePodSchedulingContextListV1Alpha2 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.resource.v1alpha2.PodSchedulingContextList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "resource.k8s.io/v1alpha2", - kind: "PodSchedulingContextList", - }; + apiVersion: 'resource.k8s.io/v1alpha2', + kind: 'PodSchedulingContextList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha2.PodSchedulingContextList". @@ -6395,9 +6269,7 @@ export class KubePodSchedulingContextListV1Alpha2 extends ApiObject { * * @param props initialization props */ - public static manifest( - props: KubePodSchedulingContextListV1Alpha2Props, - ): any { + public static manifest(props: KubePodSchedulingContextListV1Alpha2Props): any { return { ...KubePodSchedulingContextListV1Alpha2.GVK, ...toJson_KubePodSchedulingContextListV1Alpha2Props(props), @@ -6410,11 +6282,7 @@ export class KubePodSchedulingContextListV1Alpha2 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePodSchedulingContextListV1Alpha2Props, - ) { + public constructor(scope: Construct, id: string, props: KubePodSchedulingContextListV1Alpha2Props) { super(scope, id, { ...KubePodSchedulingContextListV1Alpha2.GVK, ...props, @@ -6446,9 +6314,9 @@ export class KubeResourceClaimV1Alpha2 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.resource.v1alpha2.ResourceClaim" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "resource.k8s.io/v1alpha2", - kind: "ResourceClaim", - }; + apiVersion: 'resource.k8s.io/v1alpha2', + kind: 'ResourceClaim', + } /** * Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha2.ResourceClaim". @@ -6470,11 +6338,7 @@ export class KubeResourceClaimV1Alpha2 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeResourceClaimV1Alpha2Props, - ) { + public constructor(scope: Construct, id: string, props: KubeResourceClaimV1Alpha2Props) { super(scope, id, { ...KubeResourceClaimV1Alpha2.GVK, ...props, @@ -6504,9 +6368,9 @@ export class KubeResourceClaimListV1Alpha2 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.resource.v1alpha2.ResourceClaimList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "resource.k8s.io/v1alpha2", - kind: "ResourceClaimList", - }; + apiVersion: 'resource.k8s.io/v1alpha2', + kind: 'ResourceClaimList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha2.ResourceClaimList". @@ -6528,11 +6392,7 @@ export class KubeResourceClaimListV1Alpha2 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeResourceClaimListV1Alpha2Props, - ) { + public constructor(scope: Construct, id: string, props: KubeResourceClaimListV1Alpha2Props) { super(scope, id, { ...KubeResourceClaimListV1Alpha2.GVK, ...props, @@ -6562,9 +6422,9 @@ export class KubeResourceClaimTemplateV1Alpha2 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.resource.v1alpha2.ResourceClaimTemplate" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "resource.k8s.io/v1alpha2", - kind: "ResourceClaimTemplate", - }; + apiVersion: 'resource.k8s.io/v1alpha2', + kind: 'ResourceClaimTemplate', + } /** * Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha2.ResourceClaimTemplate". @@ -6586,11 +6446,7 @@ export class KubeResourceClaimTemplateV1Alpha2 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeResourceClaimTemplateV1Alpha2Props, - ) { + public constructor(scope: Construct, id: string, props: KubeResourceClaimTemplateV1Alpha2Props) { super(scope, id, { ...KubeResourceClaimTemplateV1Alpha2.GVK, ...props, @@ -6620,9 +6476,9 @@ export class KubeResourceClaimTemplateListV1Alpha2 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.resource.v1alpha2.ResourceClaimTemplateList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "resource.k8s.io/v1alpha2", - kind: "ResourceClaimTemplateList", - }; + apiVersion: 'resource.k8s.io/v1alpha2', + kind: 'ResourceClaimTemplateList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha2.ResourceClaimTemplateList". @@ -6631,9 +6487,7 @@ export class KubeResourceClaimTemplateListV1Alpha2 extends ApiObject { * * @param props initialization props */ - public static manifest( - props: KubeResourceClaimTemplateListV1Alpha2Props, - ): any { + public static manifest(props: KubeResourceClaimTemplateListV1Alpha2Props): any { return { ...KubeResourceClaimTemplateListV1Alpha2.GVK, ...toJson_KubeResourceClaimTemplateListV1Alpha2Props(props), @@ -6646,11 +6500,7 @@ export class KubeResourceClaimTemplateListV1Alpha2 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeResourceClaimTemplateListV1Alpha2Props, - ) { + public constructor(scope: Construct, id: string, props: KubeResourceClaimTemplateListV1Alpha2Props) { super(scope, id, { ...KubeResourceClaimTemplateListV1Alpha2.GVK, ...props, @@ -6682,9 +6532,9 @@ export class KubeResourceClassV1Alpha2 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.resource.v1alpha2.ResourceClass" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "resource.k8s.io/v1alpha2", - kind: "ResourceClass", - }; + apiVersion: 'resource.k8s.io/v1alpha2', + kind: 'ResourceClass', + } /** * Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha2.ResourceClass". @@ -6706,11 +6556,7 @@ export class KubeResourceClassV1Alpha2 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeResourceClassV1Alpha2Props, - ) { + public constructor(scope: Construct, id: string, props: KubeResourceClassV1Alpha2Props) { super(scope, id, { ...KubeResourceClassV1Alpha2.GVK, ...props, @@ -6740,9 +6586,9 @@ export class KubeResourceClassListV1Alpha2 extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.resource.v1alpha2.ResourceClassList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "resource.k8s.io/v1alpha2", - kind: "ResourceClassList", - }; + apiVersion: 'resource.k8s.io/v1alpha2', + kind: 'ResourceClassList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.resource.v1alpha2.ResourceClassList". @@ -6764,11 +6610,7 @@ export class KubeResourceClassListV1Alpha2 extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeResourceClassListV1Alpha2Props, - ) { + public constructor(scope: Construct, id: string, props: KubeResourceClassListV1Alpha2Props) { super(scope, id, { ...KubeResourceClassListV1Alpha2.GVK, ...props, @@ -6798,9 +6640,9 @@ export class KubePriorityClass extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.scheduling.v1.PriorityClass" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "scheduling.k8s.io/v1", - kind: "PriorityClass", - }; + apiVersion: 'scheduling.k8s.io/v1', + kind: 'PriorityClass', + } /** * Renders a Kubernetes manifest for "io.k8s.api.scheduling.v1.PriorityClass". @@ -6822,11 +6664,7 @@ export class KubePriorityClass extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePriorityClassProps, - ) { + public constructor(scope: Construct, id: string, props: KubePriorityClassProps) { super(scope, id, { ...KubePriorityClass.GVK, ...props, @@ -6856,9 +6694,9 @@ export class KubePriorityClassList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.scheduling.v1.PriorityClassList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "scheduling.k8s.io/v1", - kind: "PriorityClassList", - }; + apiVersion: 'scheduling.k8s.io/v1', + kind: 'PriorityClassList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.scheduling.v1.PriorityClassList". @@ -6880,11 +6718,7 @@ export class KubePriorityClassList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubePriorityClassListProps, - ) { + public constructor(scope: Construct, id: string, props: KubePriorityClassListProps) { super(scope, id, { ...KubePriorityClassList.GVK, ...props, @@ -6914,9 +6748,9 @@ export class KubeCsiDriver extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.storage.v1.CSIDriver" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "storage.k8s.io/v1", - kind: "CSIDriver", - }; + apiVersion: 'storage.k8s.io/v1', + kind: 'CSIDriver', + } /** * Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSIDriver". @@ -6968,9 +6802,9 @@ export class KubeCsiDriverList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.storage.v1.CSIDriverList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "storage.k8s.io/v1", - kind: "CSIDriverList", - }; + apiVersion: 'storage.k8s.io/v1', + kind: 'CSIDriverList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSIDriverList". @@ -6992,11 +6826,7 @@ export class KubeCsiDriverList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeCsiDriverListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeCsiDriverListProps) { super(scope, id, { ...KubeCsiDriverList.GVK, ...props, @@ -7026,9 +6856,9 @@ export class KubeCsiNode extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.storage.v1.CSINode" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "storage.k8s.io/v1", - kind: "CSINode", - }; + apiVersion: 'storage.k8s.io/v1', + kind: 'CSINode', + } /** * Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSINode". @@ -7080,9 +6910,9 @@ export class KubeCsiNodeList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.storage.v1.CSINodeList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "storage.k8s.io/v1", - kind: "CSINodeList", - }; + apiVersion: 'storage.k8s.io/v1', + kind: 'CSINodeList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSINodeList". @@ -7104,11 +6934,7 @@ export class KubeCsiNodeList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeCsiNodeListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeCsiNodeListProps) { super(scope, id, { ...KubeCsiNodeList.GVK, ...props, @@ -7146,9 +6972,9 @@ export class KubeCsiStorageCapacity extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.storage.v1.CSIStorageCapacity" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "storage.k8s.io/v1", - kind: "CSIStorageCapacity", - }; + apiVersion: 'storage.k8s.io/v1', + kind: 'CSIStorageCapacity', + } /** * Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSIStorageCapacity". @@ -7170,11 +6996,7 @@ export class KubeCsiStorageCapacity extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeCsiStorageCapacityProps, - ) { + public constructor(scope: Construct, id: string, props: KubeCsiStorageCapacityProps) { super(scope, id, { ...KubeCsiStorageCapacity.GVK, ...props, @@ -7204,9 +7026,9 @@ export class KubeCsiStorageCapacityList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.storage.v1.CSIStorageCapacityList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "storage.k8s.io/v1", - kind: "CSIStorageCapacityList", - }; + apiVersion: 'storage.k8s.io/v1', + kind: 'CSIStorageCapacityList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.storage.v1.CSIStorageCapacityList". @@ -7228,11 +7050,7 @@ export class KubeCsiStorageCapacityList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeCsiStorageCapacityListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeCsiStorageCapacityListProps) { super(scope, id, { ...KubeCsiStorageCapacityList.GVK, ...props, @@ -7264,9 +7082,9 @@ export class KubeStorageClass extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.storage.v1.StorageClass" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "storage.k8s.io/v1", - kind: "StorageClass", - }; + apiVersion: 'storage.k8s.io/v1', + kind: 'StorageClass', + } /** * Renders a Kubernetes manifest for "io.k8s.api.storage.v1.StorageClass". @@ -7288,11 +7106,7 @@ export class KubeStorageClass extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeStorageClassProps, - ) { + public constructor(scope: Construct, id: string, props: KubeStorageClassProps) { super(scope, id, { ...KubeStorageClass.GVK, ...props, @@ -7322,9 +7136,9 @@ export class KubeStorageClassList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.storage.v1.StorageClassList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "storage.k8s.io/v1", - kind: "StorageClassList", - }; + apiVersion: 'storage.k8s.io/v1', + kind: 'StorageClassList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.storage.v1.StorageClassList". @@ -7346,11 +7160,7 @@ export class KubeStorageClassList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeStorageClassListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeStorageClassListProps) { super(scope, id, { ...KubeStorageClassList.GVK, ...props, @@ -7382,9 +7192,9 @@ export class KubeVolumeAttachment extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.storage.v1.VolumeAttachment" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "storage.k8s.io/v1", - kind: "VolumeAttachment", - }; + apiVersion: 'storage.k8s.io/v1', + kind: 'VolumeAttachment', + } /** * Renders a Kubernetes manifest for "io.k8s.api.storage.v1.VolumeAttachment". @@ -7406,11 +7216,7 @@ export class KubeVolumeAttachment extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeVolumeAttachmentProps, - ) { + public constructor(scope: Construct, id: string, props: KubeVolumeAttachmentProps) { super(scope, id, { ...KubeVolumeAttachment.GVK, ...props, @@ -7440,9 +7246,9 @@ export class KubeVolumeAttachmentList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.api.storage.v1.VolumeAttachmentList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "storage.k8s.io/v1", - kind: "VolumeAttachmentList", - }; + apiVersion: 'storage.k8s.io/v1', + kind: 'VolumeAttachmentList', + } /** * Renders a Kubernetes manifest for "io.k8s.api.storage.v1.VolumeAttachmentList". @@ -7464,11 +7270,7 @@ export class KubeVolumeAttachmentList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeVolumeAttachmentListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeVolumeAttachmentListProps) { super(scope, id, { ...KubeVolumeAttachmentList.GVK, ...props, @@ -7489,18 +7291,126 @@ export class KubeVolumeAttachmentList extends ApiObject { } /** - * CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format <.spec.name>.<.spec.group>. + * VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning. * - * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition + * @schema io.k8s.api.storage.v1alpha1.VolumeAttributesClass + */ +export class KubeVolumeAttributesClassV1Alpha1 extends ApiObject { + /** + * Returns the apiVersion and kind for "io.k8s.api.storage.v1alpha1.VolumeAttributesClass" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'storage.k8s.io/v1alpha1', + kind: 'VolumeAttributesClass', + } + + /** + * Renders a Kubernetes manifest for "io.k8s.api.storage.v1alpha1.VolumeAttributesClass". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: KubeVolumeAttributesClassV1Alpha1Props): any { + return { + ...KubeVolumeAttributesClassV1Alpha1.GVK, + ...toJson_KubeVolumeAttributesClassV1Alpha1Props(props), + }; + } + + /** + * Defines a "io.k8s.api.storage.v1alpha1.VolumeAttributesClass" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: KubeVolumeAttributesClassV1Alpha1Props) { + super(scope, id, { + ...KubeVolumeAttributesClassV1Alpha1.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...KubeVolumeAttributesClassV1Alpha1.GVK, + ...toJson_KubeVolumeAttributesClassV1Alpha1Props(resolved), + }; + } +} + +/** + * VolumeAttributesClassList is a collection of VolumeAttributesClass objects. + * + * @schema io.k8s.api.storage.v1alpha1.VolumeAttributesClassList + */ +export class KubeVolumeAttributesClassListV1Alpha1 extends ApiObject { + /** + * Returns the apiVersion and kind for "io.k8s.api.storage.v1alpha1.VolumeAttributesClassList" + */ + public static readonly GVK: GroupVersionKind = { + apiVersion: 'storage.k8s.io/v1alpha1', + kind: 'VolumeAttributesClassList', + } + + /** + * Renders a Kubernetes manifest for "io.k8s.api.storage.v1alpha1.VolumeAttributesClassList". + * + * This can be used to inline resource manifests inside other objects (e.g. as templates). + * + * @param props initialization props + */ + public static manifest(props: KubeVolumeAttributesClassListV1Alpha1Props): any { + return { + ...KubeVolumeAttributesClassListV1Alpha1.GVK, + ...toJson_KubeVolumeAttributesClassListV1Alpha1Props(props), + }; + } + + /** + * Defines a "io.k8s.api.storage.v1alpha1.VolumeAttributesClassList" API object + * @param scope the scope in which to define this object + * @param id a scope-local name for the object + * @param props initialization props + */ + public constructor(scope: Construct, id: string, props: KubeVolumeAttributesClassListV1Alpha1Props) { + super(scope, id, { + ...KubeVolumeAttributesClassListV1Alpha1.GVK, + ...props, + }); + } + + /** + * Renders the object to Kubernetes JSON. + */ + public toJson(): any { + const resolved = super.toJson(); + + return { + ...KubeVolumeAttributesClassListV1Alpha1.GVK, + ...toJson_KubeVolumeAttributesClassListV1Alpha1Props(resolved), + }; + } +} + +/** + * CustomResourceDefinition represents a resource that should be exposed on the API server. Its name MUST be in the format <.spec.name>.<.spec.group>. + * + * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition */ export class KubeCustomResourceDefinition extends ApiObject { /** * Returns the apiVersion and kind for "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "apiextensions.k8s.io/v1", - kind: "CustomResourceDefinition", - }; + apiVersion: 'apiextensions.k8s.io/v1', + kind: 'CustomResourceDefinition', + } /** * Renders a Kubernetes manifest for "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition". @@ -7522,11 +7432,7 @@ export class KubeCustomResourceDefinition extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeCustomResourceDefinitionProps, - ) { + public constructor(scope: Construct, id: string, props: KubeCustomResourceDefinitionProps) { super(scope, id, { ...KubeCustomResourceDefinition.GVK, ...props, @@ -7556,9 +7462,9 @@ export class KubeCustomResourceDefinitionList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "apiextensions.k8s.io/v1", - kind: "CustomResourceDefinitionList", - }; + apiVersion: 'apiextensions.k8s.io/v1', + kind: 'CustomResourceDefinitionList', + } /** * Renders a Kubernetes manifest for "io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList". @@ -7580,11 +7486,7 @@ export class KubeCustomResourceDefinitionList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeCustomResourceDefinitionListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeCustomResourceDefinitionListProps) { super(scope, id, { ...KubeCustomResourceDefinitionList.GVK, ...props, @@ -7614,9 +7516,9 @@ export class KubeStatus extends ApiObject { * Returns the apiVersion and kind for "io.k8s.apimachinery.pkg.apis.meta.v1.Status" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "v1", - kind: "Status", - }; + apiVersion: 'v1', + kind: 'Status', + } /** * Renders a Kubernetes manifest for "io.k8s.apimachinery.pkg.apis.meta.v1.Status". @@ -7638,11 +7540,7 @@ export class KubeStatus extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeStatusProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeStatusProps = {}) { super(scope, id, { ...KubeStatus.GVK, ...props, @@ -7672,9 +7570,9 @@ export class KubeApiService extends ApiObject { * Returns the apiVersion and kind for "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "apiregistration.k8s.io/v1", - kind: "APIService", - }; + apiVersion: 'apiregistration.k8s.io/v1', + kind: 'APIService', + } /** * Renders a Kubernetes manifest for "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService". @@ -7696,11 +7594,7 @@ export class KubeApiService extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeApiServiceProps = {}, - ) { + public constructor(scope: Construct, id: string, props: KubeApiServiceProps = {}) { super(scope, id, { ...KubeApiService.GVK, ...props, @@ -7730,9 +7624,9 @@ export class KubeApiServiceList extends ApiObject { * Returns the apiVersion and kind for "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList" */ public static readonly GVK: GroupVersionKind = { - apiVersion: "apiregistration.k8s.io/v1", - kind: "APIServiceList", - }; + apiVersion: 'apiregistration.k8s.io/v1', + kind: 'APIServiceList', + } /** * Renders a Kubernetes manifest for "io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList". @@ -7754,11 +7648,7 @@ export class KubeApiServiceList extends ApiObject { * @param id a scope-local name for the object * @param props initialization props */ - public constructor( - scope: Construct, - id: string, - props: KubeApiServiceListProps, - ) { + public constructor(scope: Construct, id: string, props: KubeApiServiceListProps) { super(scope, id, { ...KubeApiServiceList.GVK, ...props, @@ -7797,27 +7687,21 @@ export interface KubeMutatingWebhookConfigurationProps { * @schema io.k8s.api.admissionregistration.v1.MutatingWebhookConfiguration#webhooks */ readonly webhooks?: MutatingWebhook[]; + } /** * Converts an object of type 'KubeMutatingWebhookConfigurationProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeMutatingWebhookConfigurationProps( - obj: KubeMutatingWebhookConfigurationProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeMutatingWebhookConfigurationProps(obj: KubeMutatingWebhookConfigurationProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - webhooks: obj.webhooks?.map((y) => toJson_MutatingWebhook(y)), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'webhooks': obj.webhooks?.map(y => toJson_MutatingWebhook(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -7840,29 +7724,21 @@ export interface KubeMutatingWebhookConfigurationListProps { * @schema io.k8s.api.admissionregistration.v1.MutatingWebhookConfigurationList#items */ readonly items: KubeMutatingWebhookConfigurationProps[]; + } /** * Converts an object of type 'KubeMutatingWebhookConfigurationListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeMutatingWebhookConfigurationListProps( - obj: KubeMutatingWebhookConfigurationListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeMutatingWebhookConfigurationListProps(obj: KubeMutatingWebhookConfigurationListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => - toJson_KubeMutatingWebhookConfigurationProps(y), - ), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeMutatingWebhookConfigurationProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -7885,27 +7761,21 @@ export interface KubeValidatingWebhookConfigurationProps { * @schema io.k8s.api.admissionregistration.v1.ValidatingWebhookConfiguration#webhooks */ readonly webhooks?: ValidatingWebhook[]; + } /** * Converts an object of type 'KubeValidatingWebhookConfigurationProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeValidatingWebhookConfigurationProps( - obj: KubeValidatingWebhookConfigurationProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeValidatingWebhookConfigurationProps(obj: KubeValidatingWebhookConfigurationProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - webhooks: obj.webhooks?.map((y) => toJson_ValidatingWebhook(y)), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'webhooks': obj.webhooks?.map(y => toJson_ValidatingWebhook(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -7928,29 +7798,21 @@ export interface KubeValidatingWebhookConfigurationListProps { * @schema io.k8s.api.admissionregistration.v1.ValidatingWebhookConfigurationList#items */ readonly items: KubeValidatingWebhookConfigurationProps[]; + } /** * Converts an object of type 'KubeValidatingWebhookConfigurationListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeValidatingWebhookConfigurationListProps( - obj: KubeValidatingWebhookConfigurationListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeValidatingWebhookConfigurationListProps(obj: KubeValidatingWebhookConfigurationListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => - toJson_KubeValidatingWebhookConfigurationProps(y), - ), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeValidatingWebhookConfigurationProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -7973,33 +7835,31 @@ export interface KubeValidatingAdmissionPolicyV1Alpha1Props { * @schema io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicy#spec */ readonly spec?: ValidatingAdmissionPolicySpecV1Alpha1; + } /** * Converts an object of type 'KubeValidatingAdmissionPolicyV1Alpha1Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeValidatingAdmissionPolicyV1Alpha1Props( - obj: KubeValidatingAdmissionPolicyV1Alpha1Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeValidatingAdmissionPolicyV1Alpha1Props(obj: KubeValidatingAdmissionPolicyV1Alpha1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_ValidatingAdmissionPolicySpecV1Alpha1(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_ValidatingAdmissionPolicySpecV1Alpha1(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. * + * For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. + * + * The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. + * * @schema io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding */ export interface KubeValidatingAdmissionPolicyBindingV1Alpha1Props { @@ -8016,27 +7876,21 @@ export interface KubeValidatingAdmissionPolicyBindingV1Alpha1Props { * @schema io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBinding#spec */ readonly spec?: ValidatingAdmissionPolicyBindingSpecV1Alpha1; + } /** * Converts an object of type 'KubeValidatingAdmissionPolicyBindingV1Alpha1Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeValidatingAdmissionPolicyBindingV1Alpha1Props( - obj: KubeValidatingAdmissionPolicyBindingV1Alpha1Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeValidatingAdmissionPolicyBindingV1Alpha1Props(obj: KubeValidatingAdmissionPolicyBindingV1Alpha1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_ValidatingAdmissionPolicyBindingSpecV1Alpha1(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_ValidatingAdmissionPolicyBindingSpecV1Alpha1(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8059,29 +7913,21 @@ export interface KubeValidatingAdmissionPolicyBindingListV1Alpha1Props { * @schema io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingList#items */ readonly items?: KubeValidatingAdmissionPolicyBindingV1Alpha1Props[]; + } /** * Converts an object of type 'KubeValidatingAdmissionPolicyBindingListV1Alpha1Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeValidatingAdmissionPolicyBindingListV1Alpha1Props( - obj: KubeValidatingAdmissionPolicyBindingListV1Alpha1Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeValidatingAdmissionPolicyBindingListV1Alpha1Props(obj: KubeValidatingAdmissionPolicyBindingListV1Alpha1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => - toJson_KubeValidatingAdmissionPolicyBindingV1Alpha1Props(y), - ), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeValidatingAdmissionPolicyBindingV1Alpha1Props(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8104,29 +7950,173 @@ export interface KubeValidatingAdmissionPolicyListV1Alpha1Props { * @schema io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyList#items */ readonly items?: KubeValidatingAdmissionPolicyV1Alpha1Props[]; + } /** * Converts an object of type 'KubeValidatingAdmissionPolicyListV1Alpha1Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeValidatingAdmissionPolicyListV1Alpha1Props( - obj: KubeValidatingAdmissionPolicyListV1Alpha1Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeValidatingAdmissionPolicyListV1Alpha1Props(obj: KubeValidatingAdmissionPolicyListV1Alpha1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeValidatingAdmissionPolicyV1Alpha1Props(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ValidatingAdmissionPolicy describes the definition of an admission validation policy that accepts or rejects an object without changing it. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy + */ +export interface KubeValidatingAdmissionPolicyV1Beta1Props { + /** + * Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy#metadata + */ + readonly metadata?: ObjectMeta; + + /** + * Specification of the desired behavior of the ValidatingAdmissionPolicy. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicy#spec + */ + readonly spec?: ValidatingAdmissionPolicySpecV1Beta1; + +} + +/** + * Converts an object of type 'KubeValidatingAdmissionPolicyV1Beta1Props' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_KubeValidatingAdmissionPolicyV1Beta1Props(obj: KubeValidatingAdmissionPolicyV1Beta1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_ValidatingAdmissionPolicySpecV1Beta1(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ValidatingAdmissionPolicyBinding binds the ValidatingAdmissionPolicy with paramerized resources. ValidatingAdmissionPolicyBinding and parameter CRDs together define how cluster administrators configure policies for clusters. + * + * For a given admission request, each binding will cause its policy to be evaluated N times, where N is 1 for policies/bindings that don't use params, otherwise N is the number of parameters selected by the binding. + * + * The CEL expressions of a policy must have a computed CEL cost below the maximum CEL budget. Each evaluation of the policy is given an independent CEL cost budget. Adding/removing policies, bindings, or params can not affect whether a given (policy, binding, param) combination is within its own CEL budget. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding + */ +export interface KubeValidatingAdmissionPolicyBindingV1Beta1Props { + /** + * Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding#metadata + */ + readonly metadata?: ObjectMeta; + + /** + * Specification of the desired behavior of the ValidatingAdmissionPolicyBinding. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBinding#spec + */ + readonly spec?: ValidatingAdmissionPolicyBindingSpecV1Beta1; + +} + +/** + * Converts an object of type 'KubeValidatingAdmissionPolicyBindingV1Beta1Props' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_KubeValidatingAdmissionPolicyBindingV1Beta1Props(obj: KubeValidatingAdmissionPolicyBindingV1Beta1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_ValidatingAdmissionPolicyBindingSpecV1Beta1(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ValidatingAdmissionPolicyBindingList is a list of ValidatingAdmissionPolicyBinding. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList + */ +export interface KubeValidatingAdmissionPolicyBindingListV1Beta1Props { + /** + * Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList#metadata + */ + readonly metadata?: ListMeta; + + /** + * List of PolicyBinding. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingList#items + */ + readonly items?: KubeValidatingAdmissionPolicyBindingV1Beta1Props[]; + +} + +/** + * Converts an object of type 'KubeValidatingAdmissionPolicyBindingListV1Beta1Props' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_KubeValidatingAdmissionPolicyBindingListV1Beta1Props(obj: KubeValidatingAdmissionPolicyBindingListV1Beta1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeValidatingAdmissionPolicyBindingV1Beta1Props(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ValidatingAdmissionPolicyList is a list of ValidatingAdmissionPolicy. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList + */ +export interface KubeValidatingAdmissionPolicyListV1Beta1Props { + /** + * Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList#metadata + */ + readonly metadata?: ListMeta; + + /** + * List of ValidatingAdmissionPolicy. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyList#items + */ + readonly items?: KubeValidatingAdmissionPolicyV1Beta1Props[]; + +} + +/** + * Converts an object of type 'KubeValidatingAdmissionPolicyListV1Beta1Props' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_KubeValidatingAdmissionPolicyListV1Beta1Props(obj: KubeValidatingAdmissionPolicyListV1Beta1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => - toJson_KubeValidatingAdmissionPolicyV1Alpha1Props(y), - ), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeValidatingAdmissionPolicyV1Beta1Props(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8149,27 +8139,21 @@ export interface KubeStorageVersionV1Alpha1Props { * @schema io.k8s.api.apiserverinternal.v1alpha1.StorageVersion#spec */ readonly spec: any; + } /** * Converts an object of type 'KubeStorageVersionV1Alpha1Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeStorageVersionV1Alpha1Props( - obj: KubeStorageVersionV1Alpha1Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeStorageVersionV1Alpha1Props(obj: KubeStorageVersionV1Alpha1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: obj.spec, + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': obj.spec, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8192,27 +8176,21 @@ export interface KubeStorageVersionListV1Alpha1Props { * @schema io.k8s.api.apiserverinternal.v1alpha1.StorageVersionList#items */ readonly items: KubeStorageVersionV1Alpha1Props[]; + } /** * Converts an object of type 'KubeStorageVersionListV1Alpha1Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeStorageVersionListV1Alpha1Props( - obj: KubeStorageVersionListV1Alpha1Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeStorageVersionListV1Alpha1Props(obj: KubeStorageVersionListV1Alpha1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeStorageVersionV1Alpha1Props(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeStorageVersionV1Alpha1Props(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8242,28 +8220,22 @@ export interface KubeControllerRevisionProps { * @schema io.k8s.api.apps.v1.ControllerRevision#revision */ readonly revision: number; + } /** * Converts an object of type 'KubeControllerRevisionProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeControllerRevisionProps( - obj: KubeControllerRevisionProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeControllerRevisionProps(obj: KubeControllerRevisionProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - data: obj.data, - revision: obj.revision, + 'metadata': toJson_ObjectMeta(obj.metadata), + 'data': obj.data, + 'revision': obj.revision, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8286,27 +8258,21 @@ export interface KubeControllerRevisionListProps { * @schema io.k8s.api.apps.v1.ControllerRevisionList#items */ readonly items: KubeControllerRevisionProps[]; + } /** * Converts an object of type 'KubeControllerRevisionListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeControllerRevisionListProps( - obj: KubeControllerRevisionListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeControllerRevisionListProps(obj: KubeControllerRevisionListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeControllerRevisionProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeControllerRevisionProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8329,27 +8295,21 @@ export interface KubeDaemonSetProps { * @schema io.k8s.api.apps.v1.DaemonSet#spec */ readonly spec?: DaemonSetSpec; + } /** * Converts an object of type 'KubeDaemonSetProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeDaemonSetProps( - obj: KubeDaemonSetProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeDaemonSetProps(obj: KubeDaemonSetProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_DaemonSetSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_DaemonSetSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8372,27 +8332,21 @@ export interface KubeDaemonSetListProps { * @schema io.k8s.api.apps.v1.DaemonSetList#items */ readonly items: KubeDaemonSetProps[]; + } /** * Converts an object of type 'KubeDaemonSetListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeDaemonSetListProps( - obj: KubeDaemonSetListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeDaemonSetListProps(obj: KubeDaemonSetListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeDaemonSetProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeDaemonSetProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8415,27 +8369,21 @@ export interface KubeDeploymentProps { * @schema io.k8s.api.apps.v1.Deployment#spec */ readonly spec?: DeploymentSpec; + } /** * Converts an object of type 'KubeDeploymentProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeDeploymentProps( - obj: KubeDeploymentProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeDeploymentProps(obj: KubeDeploymentProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_DeploymentSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_DeploymentSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8458,27 +8406,21 @@ export interface KubeDeploymentListProps { * @schema io.k8s.api.apps.v1.DeploymentList#items */ readonly items: KubeDeploymentProps[]; + } /** * Converts an object of type 'KubeDeploymentListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeDeploymentListProps( - obj: KubeDeploymentListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeDeploymentListProps(obj: KubeDeploymentListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeDeploymentProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeDeploymentProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8501,27 +8443,21 @@ export interface KubeReplicaSetProps { * @schema io.k8s.api.apps.v1.ReplicaSet#spec */ readonly spec?: ReplicaSetSpec; + } /** * Converts an object of type 'KubeReplicaSetProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeReplicaSetProps( - obj: KubeReplicaSetProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeReplicaSetProps(obj: KubeReplicaSetProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_ReplicaSetSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_ReplicaSetSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8544,27 +8480,21 @@ export interface KubeReplicaSetListProps { * @schema io.k8s.api.apps.v1.ReplicaSetList#items */ readonly items: KubeReplicaSetProps[]; + } /** * Converts an object of type 'KubeReplicaSetListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeReplicaSetListProps( - obj: KubeReplicaSetListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeReplicaSetListProps(obj: KubeReplicaSetListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeReplicaSetProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeReplicaSetProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8591,27 +8521,21 @@ export interface KubeStatefulSetProps { * @schema io.k8s.api.apps.v1.StatefulSet#spec */ readonly spec?: StatefulSetSpec; + } /** * Converts an object of type 'KubeStatefulSetProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeStatefulSetProps( - obj: KubeStatefulSetProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeStatefulSetProps(obj: KubeStatefulSetProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_StatefulSetSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_StatefulSetSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8634,79 +8558,96 @@ export interface KubeStatefulSetListProps { * @schema io.k8s.api.apps.v1.StatefulSetList#items */ readonly items: KubeStatefulSetProps[]; + } /** * Converts an object of type 'KubeStatefulSetListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeStatefulSetListProps( - obj: KubeStatefulSetListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeStatefulSetListProps(obj: KubeStatefulSetListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeStatefulSetProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeStatefulSetProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** - * TokenRequest requests a token for a given service account. + * SelfSubjectReview contains the user information that the kube-apiserver has about the user making this request. When using impersonation, users will receive the user info of the user being impersonated. If impersonation or request header authentication is used, any extra keys will have their case ignored and returned as lowercase. * - * @schema io.k8s.api.authentication.v1.TokenRequest + * @schema io.k8s.api.authentication.v1.SelfSubjectReview */ -export interface KubeTokenRequestProps { +export interface KubeSelfSubjectReviewProps { /** * Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata * - * @schema io.k8s.api.authentication.v1.TokenRequest#metadata + * @schema io.k8s.api.authentication.v1.SelfSubjectReview#metadata */ readonly metadata?: ObjectMeta; - /** - * Spec holds information about the request being evaluated - * - * @schema io.k8s.api.authentication.v1.TokenRequest#spec - */ - readonly spec: TokenRequestSpec; } /** - * Converts an object of type 'KubeTokenRequestProps' to JSON representation. + * Converts an object of type 'KubeSelfSubjectReviewProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeTokenRequestProps( - obj: KubeTokenRequestProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeSelfSubjectReviewProps(obj: KubeSelfSubjectReviewProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_TokenRequestSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** - * TokenReview attempts to authenticate a token to a known user. Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver. + * TokenRequest requests a token for a given service account. * - * @schema io.k8s.api.authentication.v1.TokenReview + * @schema io.k8s.api.authentication.v1.TokenRequest */ -export interface KubeTokenReviewProps { +export interface KubeTokenRequestProps { + /** + * Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + * + * @schema io.k8s.api.authentication.v1.TokenRequest#metadata + */ + readonly metadata?: ObjectMeta; + + /** + * Spec holds information about the request being evaluated + * + * @schema io.k8s.api.authentication.v1.TokenRequest#spec + */ + readonly spec: TokenRequestSpec; + +} + +/** + * Converts an object of type 'KubeTokenRequestProps' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_KubeTokenRequestProps(obj: KubeTokenRequestProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_TokenRequestSpec(obj.spec), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * TokenReview attempts to authenticate a token to a known user. Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver. + * + * @schema io.k8s.api.authentication.v1.TokenReview + */ +export interface KubeTokenReviewProps { /** * Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata * @@ -8720,27 +8661,21 @@ export interface KubeTokenReviewProps { * @schema io.k8s.api.authentication.v1.TokenReview#spec */ readonly spec: TokenReviewSpec; + } /** * Converts an object of type 'KubeTokenReviewProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeTokenReviewProps( - obj: KubeTokenReviewProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeTokenReviewProps(obj: KubeTokenReviewProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_TokenReviewSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_TokenReviewSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8756,26 +8691,20 @@ export interface KubeSelfSubjectReviewV1Alpha1Props { * @schema io.k8s.api.authentication.v1alpha1.SelfSubjectReview#metadata */ readonly metadata?: ObjectMeta; + } /** * Converts an object of type 'KubeSelfSubjectReviewV1Alpha1Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeSelfSubjectReviewV1Alpha1Props( - obj: KubeSelfSubjectReviewV1Alpha1Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeSelfSubjectReviewV1Alpha1Props(obj: KubeSelfSubjectReviewV1Alpha1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), + 'metadata': toJson_ObjectMeta(obj.metadata), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8791,26 +8720,20 @@ export interface KubeSelfSubjectReviewV1Beta1Props { * @schema io.k8s.api.authentication.v1beta1.SelfSubjectReview#metadata */ readonly metadata?: ObjectMeta; + } /** * Converts an object of type 'KubeSelfSubjectReviewV1Beta1Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeSelfSubjectReviewV1Beta1Props( - obj: KubeSelfSubjectReviewV1Beta1Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeSelfSubjectReviewV1Beta1Props(obj: KubeSelfSubjectReviewV1Beta1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), + 'metadata': toJson_ObjectMeta(obj.metadata), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8833,27 +8756,21 @@ export interface KubeLocalSubjectAccessReviewProps { * @schema io.k8s.api.authorization.v1.LocalSubjectAccessReview#spec */ readonly spec: SubjectAccessReviewSpec; + } /** * Converts an object of type 'KubeLocalSubjectAccessReviewProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeLocalSubjectAccessReviewProps( - obj: KubeLocalSubjectAccessReviewProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeLocalSubjectAccessReviewProps(obj: KubeLocalSubjectAccessReviewProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_SubjectAccessReviewSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_SubjectAccessReviewSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8876,27 +8793,21 @@ export interface KubeSelfSubjectAccessReviewProps { * @schema io.k8s.api.authorization.v1.SelfSubjectAccessReview#spec */ readonly spec: SelfSubjectAccessReviewSpec; + } /** * Converts an object of type 'KubeSelfSubjectAccessReviewProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeSelfSubjectAccessReviewProps( - obj: KubeSelfSubjectAccessReviewProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeSelfSubjectAccessReviewProps(obj: KubeSelfSubjectAccessReviewProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_SelfSubjectAccessReviewSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_SelfSubjectAccessReviewSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8919,27 +8830,21 @@ export interface KubeSelfSubjectRulesReviewProps { * @schema io.k8s.api.authorization.v1.SelfSubjectRulesReview#spec */ readonly spec: SelfSubjectRulesReviewSpec; + } /** * Converts an object of type 'KubeSelfSubjectRulesReviewProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeSelfSubjectRulesReviewProps( - obj: KubeSelfSubjectRulesReviewProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeSelfSubjectRulesReviewProps(obj: KubeSelfSubjectRulesReviewProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_SelfSubjectRulesReviewSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_SelfSubjectRulesReviewSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -8962,27 +8867,21 @@ export interface KubeSubjectAccessReviewProps { * @schema io.k8s.api.authorization.v1.SubjectAccessReview#spec */ readonly spec: SubjectAccessReviewSpec; + } /** * Converts an object of type 'KubeSubjectAccessReviewProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeSubjectAccessReviewProps( - obj: KubeSubjectAccessReviewProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeSubjectAccessReviewProps(obj: KubeSubjectAccessReviewProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_SubjectAccessReviewSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_SubjectAccessReviewSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9005,27 +8904,21 @@ export interface KubeHorizontalPodAutoscalerProps { * @schema io.k8s.api.autoscaling.v1.HorizontalPodAutoscaler#spec */ readonly spec?: HorizontalPodAutoscalerSpec; + } /** * Converts an object of type 'KubeHorizontalPodAutoscalerProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeHorizontalPodAutoscalerProps( - obj: KubeHorizontalPodAutoscalerProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeHorizontalPodAutoscalerProps(obj: KubeHorizontalPodAutoscalerProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_HorizontalPodAutoscalerSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_HorizontalPodAutoscalerSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9048,27 +8941,21 @@ export interface KubeHorizontalPodAutoscalerListProps { * @schema io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerList#items */ readonly items: KubeHorizontalPodAutoscalerProps[]; + } /** * Converts an object of type 'KubeHorizontalPodAutoscalerListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeHorizontalPodAutoscalerListProps( - obj: KubeHorizontalPodAutoscalerListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeHorizontalPodAutoscalerListProps(obj: KubeHorizontalPodAutoscalerListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeHorizontalPodAutoscalerProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeHorizontalPodAutoscalerProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9091,27 +8978,21 @@ export interface KubeScaleProps { * @schema io.k8s.api.autoscaling.v1.Scale#spec */ readonly spec?: ScaleSpec; + } /** * Converts an object of type 'KubeScaleProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeScaleProps( - obj: KubeScaleProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeScaleProps(obj: KubeScaleProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_ScaleSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_ScaleSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9134,27 +9015,21 @@ export interface KubeHorizontalPodAutoscalerV2Props { * @schema io.k8s.api.autoscaling.v2.HorizontalPodAutoscaler#spec */ readonly spec?: HorizontalPodAutoscalerSpecV2; + } /** * Converts an object of type 'KubeHorizontalPodAutoscalerV2Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeHorizontalPodAutoscalerV2Props( - obj: KubeHorizontalPodAutoscalerV2Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeHorizontalPodAutoscalerV2Props(obj: KubeHorizontalPodAutoscalerV2Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_HorizontalPodAutoscalerSpecV2(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_HorizontalPodAutoscalerSpecV2(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9177,27 +9052,21 @@ export interface KubeHorizontalPodAutoscalerListV2Props { * @schema io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerList#items */ readonly items: KubeHorizontalPodAutoscalerV2Props[]; + } /** * Converts an object of type 'KubeHorizontalPodAutoscalerListV2Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeHorizontalPodAutoscalerListV2Props( - obj: KubeHorizontalPodAutoscalerListV2Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeHorizontalPodAutoscalerListV2Props(obj: KubeHorizontalPodAutoscalerListV2Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeHorizontalPodAutoscalerV2Props(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeHorizontalPodAutoscalerV2Props(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9220,27 +9089,21 @@ export interface KubeCronJobProps { * @schema io.k8s.api.batch.v1.CronJob#spec */ readonly spec?: CronJobSpec; + } /** * Converts an object of type 'KubeCronJobProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeCronJobProps( - obj: KubeCronJobProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeCronJobProps(obj: KubeCronJobProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_CronJobSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_CronJobSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9263,27 +9126,21 @@ export interface KubeCronJobListProps { * @schema io.k8s.api.batch.v1.CronJobList#items */ readonly items: KubeCronJobProps[]; + } /** * Converts an object of type 'KubeCronJobListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeCronJobListProps( - obj: KubeCronJobListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeCronJobListProps(obj: KubeCronJobListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeCronJobProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeCronJobProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9306,27 +9163,21 @@ export interface KubeJobProps { * @schema io.k8s.api.batch.v1.Job#spec */ readonly spec?: JobSpec; + } /** * Converts an object of type 'KubeJobProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeJobProps( - obj: KubeJobProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeJobProps(obj: KubeJobProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_JobSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_JobSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9349,27 +9200,21 @@ export interface KubeJobListProps { * @schema io.k8s.api.batch.v1.JobList#items */ readonly items: KubeJobProps[]; + } /** * Converts an object of type 'KubeJobListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeJobListProps( - obj: KubeJobListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeJobListProps(obj: KubeJobListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeJobProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeJobProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9396,27 +9241,21 @@ export interface KubeCertificateSigningRequestProps { * @schema io.k8s.api.certificates.v1.CertificateSigningRequest#spec */ readonly spec: CertificateSigningRequestSpec; + } /** * Converts an object of type 'KubeCertificateSigningRequestProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeCertificateSigningRequestProps( - obj: KubeCertificateSigningRequestProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeCertificateSigningRequestProps(obj: KubeCertificateSigningRequestProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_CertificateSigningRequestSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_CertificateSigningRequestSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9437,27 +9276,21 @@ export interface KubeCertificateSigningRequestListProps { * @schema io.k8s.api.certificates.v1.CertificateSigningRequestList#items */ readonly items: KubeCertificateSigningRequestProps[]; + } /** * Converts an object of type 'KubeCertificateSigningRequestListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeCertificateSigningRequestListProps( - obj: KubeCertificateSigningRequestListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeCertificateSigningRequestListProps(obj: KubeCertificateSigningRequestListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeCertificateSigningRequestProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeCertificateSigningRequestProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9484,27 +9317,21 @@ export interface KubeClusterTrustBundleV1Alpha1Props { * @schema io.k8s.api.certificates.v1alpha1.ClusterTrustBundle#spec */ readonly spec: ClusterTrustBundleSpecV1Alpha1; + } /** * Converts an object of type 'KubeClusterTrustBundleV1Alpha1Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeClusterTrustBundleV1Alpha1Props( - obj: KubeClusterTrustBundleV1Alpha1Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeClusterTrustBundleV1Alpha1Props(obj: KubeClusterTrustBundleV1Alpha1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_ClusterTrustBundleSpecV1Alpha1(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_ClusterTrustBundleSpecV1Alpha1(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9527,27 +9354,21 @@ export interface KubeClusterTrustBundleListV1Alpha1Props { * @schema io.k8s.api.certificates.v1alpha1.ClusterTrustBundleList#items */ readonly items: KubeClusterTrustBundleV1Alpha1Props[]; + } /** * Converts an object of type 'KubeClusterTrustBundleListV1Alpha1Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeClusterTrustBundleListV1Alpha1Props( - obj: KubeClusterTrustBundleListV1Alpha1Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeClusterTrustBundleListV1Alpha1Props(obj: KubeClusterTrustBundleListV1Alpha1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeClusterTrustBundleV1Alpha1Props(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeClusterTrustBundleV1Alpha1Props(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9570,27 +9391,21 @@ export interface KubeLeaseProps { * @schema io.k8s.api.coordination.v1.Lease#spec */ readonly spec?: LeaseSpec; + } /** * Converts an object of type 'KubeLeaseProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeLeaseProps( - obj: KubeLeaseProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeLeaseProps(obj: KubeLeaseProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_LeaseSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_LeaseSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9613,27 +9428,21 @@ export interface KubeLeaseListProps { * @schema io.k8s.api.coordination.v1.LeaseList#items */ readonly items: KubeLeaseProps[]; + } /** * Converts an object of type 'KubeLeaseListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeLeaseListProps( - obj: KubeLeaseListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeLeaseListProps(obj: KubeLeaseListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeLeaseProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeLeaseProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9656,27 +9465,21 @@ export interface KubeBindingProps { * @schema io.k8s.api.core.v1.Binding#target */ readonly target: ObjectReference; + } /** * Converts an object of type 'KubeBindingProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeBindingProps( - obj: KubeBindingProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeBindingProps(obj: KubeBindingProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - target: toJson_ObjectReference(obj.target), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'target': toJson_ObjectReference(obj.target), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9699,27 +9502,21 @@ export interface KubeComponentStatusProps { * @schema io.k8s.api.core.v1.ComponentStatus#conditions */ readonly conditions?: ComponentCondition[]; + } /** * Converts an object of type 'KubeComponentStatusProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeComponentStatusProps( - obj: KubeComponentStatusProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeComponentStatusProps(obj: KubeComponentStatusProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - conditions: obj.conditions?.map((y) => toJson_ComponentCondition(y)), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'conditions': obj.conditions?.map(y => toJson_ComponentCondition(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9742,27 +9539,21 @@ export interface KubeComponentStatusListProps { * @schema io.k8s.api.core.v1.ComponentStatusList#items */ readonly items: KubeComponentStatusProps[]; + } /** * Converts an object of type 'KubeComponentStatusListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeComponentStatusListProps( - obj: KubeComponentStatusListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeComponentStatusListProps(obj: KubeComponentStatusListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeComponentStatusProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeComponentStatusProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9799,41 +9590,23 @@ export interface KubeConfigMapProps { * @schema io.k8s.api.core.v1.ConfigMap#immutable */ readonly immutable?: boolean; + } /** * Converts an object of type 'KubeConfigMapProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeConfigMapProps( - obj: KubeConfigMapProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeConfigMapProps(obj: KubeConfigMapProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - binaryData: - obj.binaryData === undefined - ? undefined - : Object.entries(obj.binaryData).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - data: - obj.data === undefined - ? undefined - : Object.entries(obj.data).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - immutable: obj.immutable, + 'metadata': toJson_ObjectMeta(obj.metadata), + 'binaryData': ((obj.binaryData) === undefined) ? undefined : (Object.entries(obj.binaryData).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'data': ((obj.data) === undefined) ? undefined : (Object.entries(obj.data).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'immutable': obj.immutable, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9856,27 +9629,21 @@ export interface KubeConfigMapListProps { * @schema io.k8s.api.core.v1.ConfigMapList#items */ readonly items: KubeConfigMapProps[]; + } /** * Converts an object of type 'KubeConfigMapListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeConfigMapListProps( - obj: KubeConfigMapListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeConfigMapListProps(obj: KubeConfigMapListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeConfigMapProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeConfigMapProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9911,27 +9678,21 @@ export interface KubeEndpointsProps { * @schema io.k8s.api.core.v1.Endpoints#subsets */ readonly subsets?: EndpointSubset[]; + } /** * Converts an object of type 'KubeEndpointsProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeEndpointsProps( - obj: KubeEndpointsProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeEndpointsProps(obj: KubeEndpointsProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - subsets: obj.subsets?.map((y) => toJson_EndpointSubset(y)), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'subsets': obj.subsets?.map(y => toJson_EndpointSubset(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -9954,27 +9715,21 @@ export interface KubeEndpointsListProps { * @schema io.k8s.api.core.v1.EndpointsList#items */ readonly items: KubeEndpointsProps[]; + } /** * Converts an object of type 'KubeEndpointsListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeEndpointsListProps( - obj: KubeEndpointsListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeEndpointsListProps(obj: KubeEndpointsListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeEndpointsProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeEndpointsProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10088,40 +9843,34 @@ export interface KubeEventProps { * @schema io.k8s.api.events.v1.Event#type */ readonly type?: string; + } /** * Converts an object of type 'KubeEventProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeEventProps( - obj: KubeEventProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeEventProps(obj: KubeEventProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - action: obj.action, - deprecatedCount: obj.deprecatedCount, - deprecatedFirstTimestamp: obj.deprecatedFirstTimestamp?.toISOString(), - deprecatedLastTimestamp: obj.deprecatedLastTimestamp?.toISOString(), - deprecatedSource: toJson_EventSource(obj.deprecatedSource), - eventTime: obj.eventTime?.toISOString(), - note: obj.note, - reason: obj.reason, - regarding: toJson_ObjectReference(obj.regarding), - related: toJson_ObjectReference(obj.related), - reportingController: obj.reportingController, - reportingInstance: obj.reportingInstance, - series: toJson_EventSeries(obj.series), - type: obj.type, + 'metadata': toJson_ObjectMeta(obj.metadata), + 'action': obj.action, + 'deprecatedCount': obj.deprecatedCount, + 'deprecatedFirstTimestamp': obj.deprecatedFirstTimestamp?.toISOString(), + 'deprecatedLastTimestamp': obj.deprecatedLastTimestamp?.toISOString(), + 'deprecatedSource': toJson_EventSource(obj.deprecatedSource), + 'eventTime': obj.eventTime?.toISOString(), + 'note': obj.note, + 'reason': obj.reason, + 'regarding': toJson_ObjectReference(obj.regarding), + 'related': toJson_ObjectReference(obj.related), + 'reportingController': obj.reportingController, + 'reportingInstance': obj.reportingInstance, + 'series': toJson_EventSeries(obj.series), + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10144,27 +9893,21 @@ export interface KubeEventListProps { * @schema io.k8s.api.events.v1.EventList#items */ readonly items: KubeEventProps[]; + } /** * Converts an object of type 'KubeEventListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeEventListProps( - obj: KubeEventListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeEventListProps(obj: KubeEventListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeEventProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeEventProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10187,27 +9930,21 @@ export interface KubeLimitRangeProps { * @schema io.k8s.api.core.v1.LimitRange#spec */ readonly spec?: LimitRangeSpec; + } /** * Converts an object of type 'KubeLimitRangeProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeLimitRangeProps( - obj: KubeLimitRangeProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeLimitRangeProps(obj: KubeLimitRangeProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_LimitRangeSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_LimitRangeSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10230,27 +9967,21 @@ export interface KubeLimitRangeListProps { * @schema io.k8s.api.core.v1.LimitRangeList#items */ readonly items: KubeLimitRangeProps[]; + } /** * Converts an object of type 'KubeLimitRangeListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeLimitRangeListProps( - obj: KubeLimitRangeListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeLimitRangeListProps(obj: KubeLimitRangeListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeLimitRangeProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeLimitRangeProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10273,27 +10004,21 @@ export interface KubeNamespaceProps { * @schema io.k8s.api.core.v1.Namespace#spec */ readonly spec?: NamespaceSpec; + } /** * Converts an object of type 'KubeNamespaceProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeNamespaceProps( - obj: KubeNamespaceProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeNamespaceProps(obj: KubeNamespaceProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_NamespaceSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_NamespaceSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10316,27 +10041,21 @@ export interface KubeNamespaceListProps { * @schema io.k8s.api.core.v1.NamespaceList#items */ readonly items: KubeNamespaceProps[]; + } /** * Converts an object of type 'KubeNamespaceListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeNamespaceListProps( - obj: KubeNamespaceListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeNamespaceListProps(obj: KubeNamespaceListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeNamespaceProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeNamespaceProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10359,27 +10078,21 @@ export interface KubeNodeProps { * @schema io.k8s.api.core.v1.Node#spec */ readonly spec?: NodeSpec; + } /** * Converts an object of type 'KubeNodeProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeNodeProps( - obj: KubeNodeProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeNodeProps(obj: KubeNodeProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_NodeSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_NodeSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10402,27 +10115,21 @@ export interface KubeNodeListProps { * @schema io.k8s.api.core.v1.NodeList#items */ readonly items: KubeNodeProps[]; + } /** * Converts an object of type 'KubeNodeListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeNodeListProps( - obj: KubeNodeListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeNodeListProps(obj: KubeNodeListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeNodeProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeNodeProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10445,27 +10152,21 @@ export interface KubePersistentVolumeProps { * @schema io.k8s.api.core.v1.PersistentVolume#spec */ readonly spec?: PersistentVolumeSpec; + } /** * Converts an object of type 'KubePersistentVolumeProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePersistentVolumeProps( - obj: KubePersistentVolumeProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePersistentVolumeProps(obj: KubePersistentVolumeProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_PersistentVolumeSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_PersistentVolumeSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10488,27 +10189,21 @@ export interface KubePersistentVolumeClaimProps { * @schema io.k8s.api.core.v1.PersistentVolumeClaim#spec */ readonly spec?: PersistentVolumeClaimSpec; + } /** * Converts an object of type 'KubePersistentVolumeClaimProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePersistentVolumeClaimProps( - obj: KubePersistentVolumeClaimProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePersistentVolumeClaimProps(obj: KubePersistentVolumeClaimProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_PersistentVolumeClaimSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_PersistentVolumeClaimSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10531,27 +10226,21 @@ export interface KubePersistentVolumeClaimListProps { * @schema io.k8s.api.core.v1.PersistentVolumeClaimList#items */ readonly items: KubePersistentVolumeClaimProps[]; + } /** * Converts an object of type 'KubePersistentVolumeClaimListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePersistentVolumeClaimListProps( - obj: KubePersistentVolumeClaimListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePersistentVolumeClaimListProps(obj: KubePersistentVolumeClaimListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubePersistentVolumeClaimProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubePersistentVolumeClaimProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10574,27 +10263,21 @@ export interface KubePersistentVolumeListProps { * @schema io.k8s.api.core.v1.PersistentVolumeList#items */ readonly items: KubePersistentVolumeProps[]; + } /** * Converts an object of type 'KubePersistentVolumeListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePersistentVolumeListProps( - obj: KubePersistentVolumeListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePersistentVolumeListProps(obj: KubePersistentVolumeListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubePersistentVolumeProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubePersistentVolumeProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10617,27 +10300,21 @@ export interface KubePodProps { * @schema io.k8s.api.core.v1.Pod#spec */ readonly spec?: PodSpec; + } /** * Converts an object of type 'KubePodProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePodProps( - obj: KubePodProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePodProps(obj: KubePodProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_PodSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_PodSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10660,27 +10337,21 @@ export interface KubePodListProps { * @schema io.k8s.api.core.v1.PodList#items */ readonly items: KubePodProps[]; + } /** * Converts an object of type 'KubePodListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePodListProps( - obj: KubePodListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePodListProps(obj: KubePodListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubePodProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubePodProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10703,27 +10374,21 @@ export interface KubePodTemplateProps { * @schema io.k8s.api.core.v1.PodTemplate#template */ readonly template?: PodTemplateSpec; + } /** * Converts an object of type 'KubePodTemplateProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePodTemplateProps( - obj: KubePodTemplateProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePodTemplateProps(obj: KubePodTemplateProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - template: toJson_PodTemplateSpec(obj.template), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'template': toJson_PodTemplateSpec(obj.template), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10746,27 +10411,21 @@ export interface KubePodTemplateListProps { * @schema io.k8s.api.core.v1.PodTemplateList#items */ readonly items: KubePodTemplateProps[]; + } /** * Converts an object of type 'KubePodTemplateListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePodTemplateListProps( - obj: KubePodTemplateListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePodTemplateListProps(obj: KubePodTemplateListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubePodTemplateProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubePodTemplateProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10789,27 +10448,21 @@ export interface KubeReplicationControllerProps { * @schema io.k8s.api.core.v1.ReplicationController#spec */ readonly spec?: ReplicationControllerSpec; + } /** * Converts an object of type 'KubeReplicationControllerProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeReplicationControllerProps( - obj: KubeReplicationControllerProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeReplicationControllerProps(obj: KubeReplicationControllerProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_ReplicationControllerSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_ReplicationControllerSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10832,27 +10485,21 @@ export interface KubeReplicationControllerListProps { * @schema io.k8s.api.core.v1.ReplicationControllerList#items */ readonly items: KubeReplicationControllerProps[]; + } /** * Converts an object of type 'KubeReplicationControllerListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeReplicationControllerListProps( - obj: KubeReplicationControllerListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeReplicationControllerListProps(obj: KubeReplicationControllerListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeReplicationControllerProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeReplicationControllerProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10875,27 +10522,21 @@ export interface KubeResourceQuotaProps { * @schema io.k8s.api.core.v1.ResourceQuota#spec */ readonly spec?: ResourceQuotaSpec; + } /** * Converts an object of type 'KubeResourceQuotaProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeResourceQuotaProps( - obj: KubeResourceQuotaProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeResourceQuotaProps(obj: KubeResourceQuotaProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_ResourceQuotaSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_ResourceQuotaSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10918,27 +10559,21 @@ export interface KubeResourceQuotaListProps { * @schema io.k8s.api.core.v1.ResourceQuotaList#items */ readonly items: KubeResourceQuotaProps[]; + } /** * Converts an object of type 'KubeResourceQuotaListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeResourceQuotaListProps( - obj: KubeResourceQuotaListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeResourceQuotaListProps(obj: KubeResourceQuotaListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeResourceQuotaProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeResourceQuotaProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -10982,42 +10617,24 @@ export interface KubeSecretProps { * @schema io.k8s.api.core.v1.Secret#type */ readonly type?: string; + } /** * Converts an object of type 'KubeSecretProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeSecretProps( - obj: KubeSecretProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeSecretProps(obj: KubeSecretProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - data: - obj.data === undefined - ? undefined - : Object.entries(obj.data).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - immutable: obj.immutable, - stringData: - obj.stringData === undefined - ? undefined - : Object.entries(obj.stringData).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - type: obj.type, + 'metadata': toJson_ObjectMeta(obj.metadata), + 'data': ((obj.data) === undefined) ? undefined : (Object.entries(obj.data).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'immutable': obj.immutable, + 'stringData': ((obj.stringData) === undefined) ? undefined : (Object.entries(obj.stringData).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11040,27 +10657,21 @@ export interface KubeSecretListProps { * @schema io.k8s.api.core.v1.SecretList#items */ readonly items: KubeSecretProps[]; + } /** * Converts an object of type 'KubeSecretListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeSecretListProps( - obj: KubeSecretListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeSecretListProps(obj: KubeSecretListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeSecretProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeSecretProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11083,27 +10694,21 @@ export interface KubeServiceProps { * @schema io.k8s.api.core.v1.Service#spec */ readonly spec?: ServiceSpec; + } /** * Converts an object of type 'KubeServiceProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeServiceProps( - obj: KubeServiceProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeServiceProps(obj: KubeServiceProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_ServiceSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_ServiceSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11140,31 +10745,23 @@ export interface KubeServiceAccountProps { * @schema io.k8s.api.core.v1.ServiceAccount#secrets */ readonly secrets?: ObjectReference[]; + } /** * Converts an object of type 'KubeServiceAccountProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeServiceAccountProps( - obj: KubeServiceAccountProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeServiceAccountProps(obj: KubeServiceAccountProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - automountServiceAccountToken: obj.automountServiceAccountToken, - imagePullSecrets: obj.imagePullSecrets?.map((y) => - toJson_LocalObjectReference(y), - ), - secrets: obj.secrets?.map((y) => toJson_ObjectReference(y)), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'automountServiceAccountToken': obj.automountServiceAccountToken, + 'imagePullSecrets': obj.imagePullSecrets?.map(y => toJson_LocalObjectReference(y)), + 'secrets': obj.secrets?.map(y => toJson_ObjectReference(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11187,27 +10784,21 @@ export interface KubeServiceAccountListProps { * @schema io.k8s.api.core.v1.ServiceAccountList#items */ readonly items: KubeServiceAccountProps[]; + } /** * Converts an object of type 'KubeServiceAccountListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeServiceAccountListProps( - obj: KubeServiceAccountListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeServiceAccountListProps(obj: KubeServiceAccountListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeServiceAccountProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeServiceAccountProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11230,27 +10821,21 @@ export interface KubeServiceListProps { * @schema io.k8s.api.core.v1.ServiceList#items */ readonly items: KubeServiceProps[]; + } /** * Converts an object of type 'KubeServiceListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeServiceListProps( - obj: KubeServiceListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeServiceListProps(obj: KubeServiceListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeServiceProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeServiceProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11287,29 +10872,23 @@ export interface KubeEndpointSliceProps { * @schema io.k8s.api.discovery.v1.EndpointSlice#ports */ readonly ports?: EndpointPort[]; + } /** * Converts an object of type 'KubeEndpointSliceProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeEndpointSliceProps( - obj: KubeEndpointSliceProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeEndpointSliceProps(obj: KubeEndpointSliceProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - addressType: obj.addressType, - endpoints: obj.endpoints?.map((y) => toJson_Endpoint(y)), - ports: obj.ports?.map((y) => toJson_EndpointPort(y)), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'addressType': obj.addressType, + 'endpoints': obj.endpoints?.map(y => toJson_Endpoint(y)), + 'ports': obj.ports?.map(y => toJson_EndpointPort(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11332,201 +10911,169 @@ export interface KubeEndpointSliceListProps { * @schema io.k8s.api.discovery.v1.EndpointSliceList#items */ readonly items: KubeEndpointSliceProps[]; + } /** * Converts an object of type 'KubeEndpointSliceListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeEndpointSliceListProps( - obj: KubeEndpointSliceListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeEndpointSliceListProps(obj: KubeEndpointSliceListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeEndpointSliceProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeEndpointSliceProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * FlowSchema defines the schema of a group of flows. Note that a flow is made up of a set of inbound API requests with similar attributes and is identified by a pair of strings: the name of the FlowSchema and a "flow distinguisher". * - * @schema io.k8s.api.flowcontrol.v1beta2.FlowSchema + * @schema io.k8s.api.flowcontrol.v1.FlowSchema */ -export interface KubeFlowSchemaV1Beta2Props { +export interface KubeFlowSchemaProps { /** * `metadata` is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata * - * @schema io.k8s.api.flowcontrol.v1beta2.FlowSchema#metadata + * @schema io.k8s.api.flowcontrol.v1.FlowSchema#metadata */ readonly metadata?: ObjectMeta; /** * `spec` is the specification of the desired behavior of a FlowSchema. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status * - * @schema io.k8s.api.flowcontrol.v1beta2.FlowSchema#spec + * @schema io.k8s.api.flowcontrol.v1.FlowSchema#spec */ - readonly spec?: FlowSchemaSpecV1Beta2; + readonly spec?: FlowSchemaSpec; + } /** - * Converts an object of type 'KubeFlowSchemaV1Beta2Props' to JSON representation. + * Converts an object of type 'KubeFlowSchemaProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeFlowSchemaV1Beta2Props( - obj: KubeFlowSchemaV1Beta2Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeFlowSchemaProps(obj: KubeFlowSchemaProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_FlowSchemaSpecV1Beta2(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_FlowSchemaSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * FlowSchemaList is a list of FlowSchema objects. * - * @schema io.k8s.api.flowcontrol.v1beta2.FlowSchemaList + * @schema io.k8s.api.flowcontrol.v1.FlowSchemaList */ -export interface KubeFlowSchemaListV1Beta2Props { +export interface KubeFlowSchemaListProps { /** * `metadata` is the standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata * - * @schema io.k8s.api.flowcontrol.v1beta2.FlowSchemaList#metadata + * @schema io.k8s.api.flowcontrol.v1.FlowSchemaList#metadata */ readonly metadata?: ListMeta; /** * `items` is a list of FlowSchemas. * - * @schema io.k8s.api.flowcontrol.v1beta2.FlowSchemaList#items + * @schema io.k8s.api.flowcontrol.v1.FlowSchemaList#items */ - readonly items: KubeFlowSchemaV1Beta2Props[]; + readonly items: KubeFlowSchemaProps[]; + } /** - * Converts an object of type 'KubeFlowSchemaListV1Beta2Props' to JSON representation. + * Converts an object of type 'KubeFlowSchemaListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeFlowSchemaListV1Beta2Props( - obj: KubeFlowSchemaListV1Beta2Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeFlowSchemaListProps(obj: KubeFlowSchemaListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeFlowSchemaV1Beta2Props(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeFlowSchemaProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * PriorityLevelConfiguration represents the configuration of a priority level. * - * @schema io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration + * @schema io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration */ -export interface KubePriorityLevelConfigurationV1Beta2Props { +export interface KubePriorityLevelConfigurationProps { /** * `metadata` is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata * - * @schema io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration#metadata + * @schema io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration#metadata */ readonly metadata?: ObjectMeta; /** * `spec` is the specification of the desired behavior of a "request-priority". More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status * - * @schema io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfiguration#spec + * @schema io.k8s.api.flowcontrol.v1.PriorityLevelConfiguration#spec */ - readonly spec?: PriorityLevelConfigurationSpecV1Beta2; + readonly spec?: PriorityLevelConfigurationSpec; + } /** - * Converts an object of type 'KubePriorityLevelConfigurationV1Beta2Props' to JSON representation. + * Converts an object of type 'KubePriorityLevelConfigurationProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePriorityLevelConfigurationV1Beta2Props( - obj: KubePriorityLevelConfigurationV1Beta2Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePriorityLevelConfigurationProps(obj: KubePriorityLevelConfigurationProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_PriorityLevelConfigurationSpecV1Beta2(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_PriorityLevelConfigurationSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * PriorityLevelConfigurationList is a list of PriorityLevelConfiguration objects. * - * @schema io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationList + * @schema io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList */ -export interface KubePriorityLevelConfigurationListV1Beta2Props { +export interface KubePriorityLevelConfigurationListProps { /** * `metadata` is the standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata * - * @schema io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationList#metadata + * @schema io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList#metadata */ readonly metadata?: ListMeta; /** * `items` is a list of request-priorities. * - * @schema io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationList#items + * @schema io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationList#items */ - readonly items: KubePriorityLevelConfigurationV1Beta2Props[]; + readonly items: KubePriorityLevelConfigurationProps[]; + } /** - * Converts an object of type 'KubePriorityLevelConfigurationListV1Beta2Props' to JSON representation. + * Converts an object of type 'KubePriorityLevelConfigurationListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePriorityLevelConfigurationListV1Beta2Props( - obj: KubePriorityLevelConfigurationListV1Beta2Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePriorityLevelConfigurationListProps(obj: KubePriorityLevelConfigurationListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => - toJson_KubePriorityLevelConfigurationV1Beta2Props(y), - ), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubePriorityLevelConfigurationProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11549,27 +11096,21 @@ export interface KubeFlowSchemaV1Beta3Props { * @schema io.k8s.api.flowcontrol.v1beta3.FlowSchema#spec */ readonly spec?: FlowSchemaSpecV1Beta3; + } /** * Converts an object of type 'KubeFlowSchemaV1Beta3Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeFlowSchemaV1Beta3Props( - obj: KubeFlowSchemaV1Beta3Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeFlowSchemaV1Beta3Props(obj: KubeFlowSchemaV1Beta3Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_FlowSchemaSpecV1Beta3(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_FlowSchemaSpecV1Beta3(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11592,27 +11133,21 @@ export interface KubeFlowSchemaListV1Beta3Props { * @schema io.k8s.api.flowcontrol.v1beta3.FlowSchemaList#items */ readonly items: KubeFlowSchemaV1Beta3Props[]; + } /** * Converts an object of type 'KubeFlowSchemaListV1Beta3Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeFlowSchemaListV1Beta3Props( - obj: KubeFlowSchemaListV1Beta3Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeFlowSchemaListV1Beta3Props(obj: KubeFlowSchemaListV1Beta3Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeFlowSchemaV1Beta3Props(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeFlowSchemaV1Beta3Props(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11635,27 +11170,21 @@ export interface KubePriorityLevelConfigurationV1Beta3Props { * @schema io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfiguration#spec */ readonly spec?: PriorityLevelConfigurationSpecV1Beta3; + } /** * Converts an object of type 'KubePriorityLevelConfigurationV1Beta3Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePriorityLevelConfigurationV1Beta3Props( - obj: KubePriorityLevelConfigurationV1Beta3Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePriorityLevelConfigurationV1Beta3Props(obj: KubePriorityLevelConfigurationV1Beta3Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_PriorityLevelConfigurationSpecV1Beta3(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_PriorityLevelConfigurationSpecV1Beta3(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11678,29 +11207,21 @@ export interface KubePriorityLevelConfigurationListV1Beta3Props { * @schema io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationList#items */ readonly items: KubePriorityLevelConfigurationV1Beta3Props[]; + } /** * Converts an object of type 'KubePriorityLevelConfigurationListV1Beta3Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePriorityLevelConfigurationListV1Beta3Props( - obj: KubePriorityLevelConfigurationListV1Beta3Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePriorityLevelConfigurationListV1Beta3Props(obj: KubePriorityLevelConfigurationListV1Beta3Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => - toJson_KubePriorityLevelConfigurationV1Beta3Props(y), - ), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubePriorityLevelConfigurationV1Beta3Props(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11723,27 +11244,21 @@ export interface KubeIngressProps { * @schema io.k8s.api.networking.v1.Ingress#spec */ readonly spec?: IngressSpec; + } /** * Converts an object of type 'KubeIngressProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeIngressProps( - obj: KubeIngressProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeIngressProps(obj: KubeIngressProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_IngressSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_IngressSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11766,27 +11281,21 @@ export interface KubeIngressClassProps { * @schema io.k8s.api.networking.v1.IngressClass#spec */ readonly spec?: IngressClassSpec; + } /** * Converts an object of type 'KubeIngressClassProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeIngressClassProps( - obj: KubeIngressClassProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeIngressClassProps(obj: KubeIngressClassProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_IngressClassSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_IngressClassSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11809,27 +11318,21 @@ export interface KubeIngressClassListProps { * @schema io.k8s.api.networking.v1.IngressClassList#items */ readonly items: KubeIngressClassProps[]; + } /** * Converts an object of type 'KubeIngressClassListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeIngressClassListProps( - obj: KubeIngressClassListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeIngressClassListProps(obj: KubeIngressClassListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeIngressClassProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeIngressClassProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11852,27 +11355,21 @@ export interface KubeIngressListProps { * @schema io.k8s.api.networking.v1.IngressList#items */ readonly items: KubeIngressProps[]; + } /** * Converts an object of type 'KubeIngressListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeIngressListProps( - obj: KubeIngressListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeIngressListProps(obj: KubeIngressListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeIngressProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeIngressProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11895,27 +11392,21 @@ export interface KubeNetworkPolicyProps { * @schema io.k8s.api.networking.v1.NetworkPolicy#spec */ readonly spec?: NetworkPolicySpec; + } /** * Converts an object of type 'KubeNetworkPolicyProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeNetworkPolicyProps( - obj: KubeNetworkPolicyProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeNetworkPolicyProps(obj: KubeNetworkPolicyProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_NetworkPolicySpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_NetworkPolicySpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -11938,199 +11429,169 @@ export interface KubeNetworkPolicyListProps { * @schema io.k8s.api.networking.v1.NetworkPolicyList#items */ readonly items: KubeNetworkPolicyProps[]; + } /** * Converts an object of type 'KubeNetworkPolicyListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeNetworkPolicyListProps( - obj: KubeNetworkPolicyListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeNetworkPolicyListProps(obj: KubeNetworkPolicyListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeNetworkPolicyProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeNetworkPolicyProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** - * ClusterCIDR represents a single configuration for per-Node Pod CIDR allocations when the MultiCIDRRangeAllocator is enabled (see the config for kube-controller-manager). A cluster may have any number of ClusterCIDR resources, all of which will be considered when allocating a CIDR for a Node. A ClusterCIDR is eligible to be used for a given Node when the node selector matches the node in question and has free CIDRs to allocate. In case of multiple matching ClusterCIDR resources, the allocator will attempt to break ties using internal heuristics, but any ClusterCIDR whose node selector matches the Node may be used. + * IPAddress represents a single IP of a single IP Family. The object is designed to be used by APIs that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses. An IP address can be represented in different formats, to guarantee the uniqueness of the IP, the name of the object is the IP address in canonical format, four decimal digits separated by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6. Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Invalid: 10.01.2.3 or 2001:db8:0:0:0::1 * - * @schema io.k8s.api.networking.v1alpha1.ClusterCIDR + * @schema io.k8s.api.networking.v1alpha1.IPAddress */ -export interface KubeClusterCidrv1Alpha1Props { +export interface KubeIpAddressV1Alpha1Props { /** * Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata * - * @schema io.k8s.api.networking.v1alpha1.ClusterCIDR#metadata + * @schema io.k8s.api.networking.v1alpha1.IPAddress#metadata */ readonly metadata?: ObjectMeta; /** - * spec is the desired state of the ClusterCIDR. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + * spec is the desired state of the IPAddress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status * - * @schema io.k8s.api.networking.v1alpha1.ClusterCIDR#spec + * @schema io.k8s.api.networking.v1alpha1.IPAddress#spec */ - readonly spec?: ClusterCidrSpecV1Alpha1; + readonly spec?: IpAddressSpecV1Alpha1; + } /** - * Converts an object of type 'KubeClusterCidrv1Alpha1Props' to JSON representation. + * Converts an object of type 'KubeIpAddressV1Alpha1Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeClusterCidrv1Alpha1Props( - obj: KubeClusterCidrv1Alpha1Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeIpAddressV1Alpha1Props(obj: KubeIpAddressV1Alpha1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_ClusterCidrSpecV1Alpha1(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_IpAddressSpecV1Alpha1(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** - * ClusterCIDRList contains a list of ClusterCIDR. + * IPAddressList contains a list of IPAddress. * - * @schema io.k8s.api.networking.v1alpha1.ClusterCIDRList + * @schema io.k8s.api.networking.v1alpha1.IPAddressList */ -export interface KubeClusterCidrListV1Alpha1Props { +export interface KubeIpAddressListV1Alpha1Props { /** * Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata * - * @schema io.k8s.api.networking.v1alpha1.ClusterCIDRList#metadata + * @schema io.k8s.api.networking.v1alpha1.IPAddressList#metadata */ readonly metadata?: ListMeta; /** - * items is the list of ClusterCIDRs. + * items is the list of IPAddresses. * - * @schema io.k8s.api.networking.v1alpha1.ClusterCIDRList#items + * @schema io.k8s.api.networking.v1alpha1.IPAddressList#items */ - readonly items: KubeClusterCidrv1Alpha1Props[]; + readonly items: KubeIpAddressV1Alpha1Props[]; + } /** - * Converts an object of type 'KubeClusterCidrListV1Alpha1Props' to JSON representation. + * Converts an object of type 'KubeIpAddressListV1Alpha1Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeClusterCidrListV1Alpha1Props( - obj: KubeClusterCidrListV1Alpha1Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeIpAddressListV1Alpha1Props(obj: KubeIpAddressListV1Alpha1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeClusterCidrv1Alpha1Props(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeIpAddressV1Alpha1Props(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** - * IPAddress represents a single IP of a single IP Family. The object is designed to be used by APIs that operate on IP addresses. The object is used by the Service core API for allocation of IP addresses. An IP address can be represented in different formats, to guarantee the uniqueness of the IP, the name of the object is the IP address in canonical format, four decimal digits separated by dots suppressing leading zeros for IPv4 and the representation defined by RFC 5952 for IPv6. Valid: 192.168.1.5 or 2001:db8::1 or 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Invalid: 10.01.2.3 or 2001:db8:0:0:0::1 + * ServiceCIDR defines a range of IP addresses using CIDR format (e.g. 192.168.0.0/24 or 2001:db2::/64). This range is used to allocate ClusterIPs to Service objects. * - * @schema io.k8s.api.networking.v1alpha1.IPAddress + * @schema io.k8s.api.networking.v1alpha1.ServiceCIDR */ -export interface KubeIpAddressV1Alpha1Props { +export interface KubeServiceCidrv1Alpha1Props { /** * Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata * - * @schema io.k8s.api.networking.v1alpha1.IPAddress#metadata + * @schema io.k8s.api.networking.v1alpha1.ServiceCIDR#metadata */ readonly metadata?: ObjectMeta; /** - * spec is the desired state of the IPAddress. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + * spec is the desired state of the ServiceCIDR. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status * - * @schema io.k8s.api.networking.v1alpha1.IPAddress#spec + * @schema io.k8s.api.networking.v1alpha1.ServiceCIDR#spec */ - readonly spec?: IpAddressSpecV1Alpha1; + readonly spec?: ServiceCidrSpecV1Alpha1; + } /** - * Converts an object of type 'KubeIpAddressV1Alpha1Props' to JSON representation. + * Converts an object of type 'KubeServiceCidrv1Alpha1Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeIpAddressV1Alpha1Props( - obj: KubeIpAddressV1Alpha1Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeServiceCidrv1Alpha1Props(obj: KubeServiceCidrv1Alpha1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_IpAddressSpecV1Alpha1(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_ServiceCidrSpecV1Alpha1(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** - * IPAddressList contains a list of IPAddress. + * ServiceCIDRList contains a list of ServiceCIDR objects. * - * @schema io.k8s.api.networking.v1alpha1.IPAddressList + * @schema io.k8s.api.networking.v1alpha1.ServiceCIDRList */ -export interface KubeIpAddressListV1Alpha1Props { +export interface KubeServiceCidrListV1Alpha1Props { /** * Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata * - * @schema io.k8s.api.networking.v1alpha1.IPAddressList#metadata + * @schema io.k8s.api.networking.v1alpha1.ServiceCIDRList#metadata */ readonly metadata?: ListMeta; /** - * items is the list of IPAddresses. + * items is the list of ServiceCIDRs. * - * @schema io.k8s.api.networking.v1alpha1.IPAddressList#items + * @schema io.k8s.api.networking.v1alpha1.ServiceCIDRList#items */ - readonly items: KubeIpAddressV1Alpha1Props[]; + readonly items: KubeServiceCidrv1Alpha1Props[]; + } /** - * Converts an object of type 'KubeIpAddressListV1Alpha1Props' to JSON representation. + * Converts an object of type 'KubeServiceCidrListV1Alpha1Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeIpAddressListV1Alpha1Props( - obj: KubeIpAddressListV1Alpha1Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeServiceCidrListV1Alpha1Props(obj: KubeServiceCidrListV1Alpha1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeIpAddressV1Alpha1Props(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeServiceCidrv1Alpha1Props(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12168,29 +11629,23 @@ export interface KubeRuntimeClassProps { * @schema io.k8s.api.node.v1.RuntimeClass#scheduling */ readonly scheduling?: Scheduling; + } /** * Converts an object of type 'KubeRuntimeClassProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeRuntimeClassProps( - obj: KubeRuntimeClassProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeRuntimeClassProps(obj: KubeRuntimeClassProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - handler: obj.handler, - overhead: toJson_Overhead(obj.overhead), - scheduling: toJson_Scheduling(obj.scheduling), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'handler': obj.handler, + 'overhead': toJson_Overhead(obj.overhead), + 'scheduling': toJson_Scheduling(obj.scheduling), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12213,27 +11668,21 @@ export interface KubeRuntimeClassListProps { * @schema io.k8s.api.node.v1.RuntimeClassList#items */ readonly items: KubeRuntimeClassProps[]; + } /** * Converts an object of type 'KubeRuntimeClassListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeRuntimeClassListProps( - obj: KubeRuntimeClassListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeRuntimeClassListProps(obj: KubeRuntimeClassListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeRuntimeClassProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeRuntimeClassProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12256,27 +11705,21 @@ export interface KubeEvictionProps { * @schema io.k8s.api.policy.v1.Eviction#deleteOptions */ readonly deleteOptions?: DeleteOptions; + } /** * Converts an object of type 'KubeEvictionProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeEvictionProps( - obj: KubeEvictionProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeEvictionProps(obj: KubeEvictionProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - deleteOptions: toJson_DeleteOptions(obj.deleteOptions), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'deleteOptions': toJson_DeleteOptions(obj.deleteOptions), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12299,27 +11742,21 @@ export interface KubePodDisruptionBudgetProps { * @schema io.k8s.api.policy.v1.PodDisruptionBudget#spec */ readonly spec?: PodDisruptionBudgetSpec; + } /** * Converts an object of type 'KubePodDisruptionBudgetProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePodDisruptionBudgetProps( - obj: KubePodDisruptionBudgetProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePodDisruptionBudgetProps(obj: KubePodDisruptionBudgetProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_PodDisruptionBudgetSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_PodDisruptionBudgetSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12342,27 +11779,21 @@ export interface KubePodDisruptionBudgetListProps { * @schema io.k8s.api.policy.v1.PodDisruptionBudgetList#items */ readonly items: KubePodDisruptionBudgetProps[]; + } /** * Converts an object of type 'KubePodDisruptionBudgetListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePodDisruptionBudgetListProps( - obj: KubePodDisruptionBudgetListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePodDisruptionBudgetListProps(obj: KubePodDisruptionBudgetListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubePodDisruptionBudgetProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubePodDisruptionBudgetProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12392,28 +11823,22 @@ export interface KubeClusterRoleProps { * @schema io.k8s.api.rbac.v1.ClusterRole#rules */ readonly rules?: PolicyRule[]; + } /** * Converts an object of type 'KubeClusterRoleProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeClusterRoleProps( - obj: KubeClusterRoleProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeClusterRoleProps(obj: KubeClusterRoleProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - aggregationRule: toJson_AggregationRule(obj.aggregationRule), - rules: obj.rules?.map((y) => toJson_PolicyRule(y)), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'aggregationRule': toJson_AggregationRule(obj.aggregationRule), + 'rules': obj.rules?.map(y => toJson_PolicyRule(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12431,7 +11856,7 @@ export interface KubeClusterRoleBindingProps { readonly metadata?: ObjectMeta; /** - * RoleRef can only reference a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error. + * RoleRef can only reference a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error. This field is immutable. * * @schema io.k8s.api.rbac.v1.ClusterRoleBinding#roleRef */ @@ -12443,28 +11868,22 @@ export interface KubeClusterRoleBindingProps { * @schema io.k8s.api.rbac.v1.ClusterRoleBinding#subjects */ readonly subjects?: Subject[]; + } /** * Converts an object of type 'KubeClusterRoleBindingProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeClusterRoleBindingProps( - obj: KubeClusterRoleBindingProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeClusterRoleBindingProps(obj: KubeClusterRoleBindingProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - roleRef: toJson_RoleRef(obj.roleRef), - subjects: obj.subjects?.map((y) => toJson_Subject(y)), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'roleRef': toJson_RoleRef(obj.roleRef), + 'subjects': obj.subjects?.map(y => toJson_Subject(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12487,27 +11906,21 @@ export interface KubeClusterRoleBindingListProps { * @schema io.k8s.api.rbac.v1.ClusterRoleBindingList#items */ readonly items: KubeClusterRoleBindingProps[]; + } /** * Converts an object of type 'KubeClusterRoleBindingListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeClusterRoleBindingListProps( - obj: KubeClusterRoleBindingListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeClusterRoleBindingListProps(obj: KubeClusterRoleBindingListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeClusterRoleBindingProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeClusterRoleBindingProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12530,27 +11943,21 @@ export interface KubeClusterRoleListProps { * @schema io.k8s.api.rbac.v1.ClusterRoleList#items */ readonly items: KubeClusterRoleProps[]; + } /** * Converts an object of type 'KubeClusterRoleListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeClusterRoleListProps( - obj: KubeClusterRoleListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeClusterRoleListProps(obj: KubeClusterRoleListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeClusterRoleProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeClusterRoleProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12573,27 +11980,21 @@ export interface KubeRoleProps { * @schema io.k8s.api.rbac.v1.Role#rules */ readonly rules?: PolicyRule[]; + } /** * Converts an object of type 'KubeRoleProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeRoleProps( - obj: KubeRoleProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeRoleProps(obj: KubeRoleProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - rules: obj.rules?.map((y) => toJson_PolicyRule(y)), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'rules': obj.rules?.map(y => toJson_PolicyRule(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12611,7 +12012,7 @@ export interface KubeRoleBindingProps { readonly metadata?: ObjectMeta; /** - * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error. + * RoleRef can reference a Role in the current namespace or a ClusterRole in the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error. This field is immutable. * * @schema io.k8s.api.rbac.v1.RoleBinding#roleRef */ @@ -12623,28 +12024,22 @@ export interface KubeRoleBindingProps { * @schema io.k8s.api.rbac.v1.RoleBinding#subjects */ readonly subjects?: Subject[]; + } /** * Converts an object of type 'KubeRoleBindingProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeRoleBindingProps( - obj: KubeRoleBindingProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeRoleBindingProps(obj: KubeRoleBindingProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - roleRef: toJson_RoleRef(obj.roleRef), - subjects: obj.subjects?.map((y) => toJson_Subject(y)), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'roleRef': toJson_RoleRef(obj.roleRef), + 'subjects': obj.subjects?.map(y => toJson_Subject(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12667,27 +12062,21 @@ export interface KubeRoleBindingListProps { * @schema io.k8s.api.rbac.v1.RoleBindingList#items */ readonly items: KubeRoleBindingProps[]; + } /** * Converts an object of type 'KubeRoleBindingListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeRoleBindingListProps( - obj: KubeRoleBindingListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeRoleBindingListProps(obj: KubeRoleBindingListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeRoleBindingProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeRoleBindingProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12710,27 +12099,21 @@ export interface KubeRoleListProps { * @schema io.k8s.api.rbac.v1.RoleList#items */ readonly items: KubeRoleProps[]; + } /** * Converts an object of type 'KubeRoleListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeRoleListProps( - obj: KubeRoleListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeRoleListProps(obj: KubeRoleListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeRoleProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeRoleProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12755,27 +12138,21 @@ export interface KubePodSchedulingContextV1Alpha2Props { * @schema io.k8s.api.resource.v1alpha2.PodSchedulingContext#spec */ readonly spec: PodSchedulingContextSpecV1Alpha2; + } /** * Converts an object of type 'KubePodSchedulingContextV1Alpha2Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePodSchedulingContextV1Alpha2Props( - obj: KubePodSchedulingContextV1Alpha2Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePodSchedulingContextV1Alpha2Props(obj: KubePodSchedulingContextV1Alpha2Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_PodSchedulingContextSpecV1Alpha2(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_PodSchedulingContextSpecV1Alpha2(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12798,29 +12175,21 @@ export interface KubePodSchedulingContextListV1Alpha2Props { * @schema io.k8s.api.resource.v1alpha2.PodSchedulingContextList#items */ readonly items: KubePodSchedulingContextV1Alpha2Props[]; + } /** * Converts an object of type 'KubePodSchedulingContextListV1Alpha2Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePodSchedulingContextListV1Alpha2Props( - obj: KubePodSchedulingContextListV1Alpha2Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePodSchedulingContextListV1Alpha2Props(obj: KubePodSchedulingContextListV1Alpha2Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => - toJson_KubePodSchedulingContextV1Alpha2Props(y), - ), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubePodSchedulingContextV1Alpha2Props(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12845,27 +12214,21 @@ export interface KubeResourceClaimV1Alpha2Props { * @schema io.k8s.api.resource.v1alpha2.ResourceClaim#spec */ readonly spec: ResourceClaimSpecV1Alpha2; + } /** * Converts an object of type 'KubeResourceClaimV1Alpha2Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeResourceClaimV1Alpha2Props( - obj: KubeResourceClaimV1Alpha2Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeResourceClaimV1Alpha2Props(obj: KubeResourceClaimV1Alpha2Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_ResourceClaimSpecV1Alpha2(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_ResourceClaimSpecV1Alpha2(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12888,27 +12251,21 @@ export interface KubeResourceClaimListV1Alpha2Props { * @schema io.k8s.api.resource.v1alpha2.ResourceClaimList#items */ readonly items: KubeResourceClaimV1Alpha2Props[]; + } /** * Converts an object of type 'KubeResourceClaimListV1Alpha2Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeResourceClaimListV1Alpha2Props( - obj: KubeResourceClaimListV1Alpha2Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeResourceClaimListV1Alpha2Props(obj: KubeResourceClaimListV1Alpha2Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeResourceClaimV1Alpha2Props(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeResourceClaimV1Alpha2Props(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12933,27 +12290,21 @@ export interface KubeResourceClaimTemplateV1Alpha2Props { * @schema io.k8s.api.resource.v1alpha2.ResourceClaimTemplate#spec */ readonly spec: ResourceClaimTemplateSpecV1Alpha2; + } /** * Converts an object of type 'KubeResourceClaimTemplateV1Alpha2Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeResourceClaimTemplateV1Alpha2Props( - obj: KubeResourceClaimTemplateV1Alpha2Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeResourceClaimTemplateV1Alpha2Props(obj: KubeResourceClaimTemplateV1Alpha2Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_ResourceClaimTemplateSpecV1Alpha2(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_ResourceClaimTemplateSpecV1Alpha2(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -12976,29 +12327,21 @@ export interface KubeResourceClaimTemplateListV1Alpha2Props { * @schema io.k8s.api.resource.v1alpha2.ResourceClaimTemplateList#items */ readonly items: KubeResourceClaimTemplateV1Alpha2Props[]; + } /** * Converts an object of type 'KubeResourceClaimTemplateListV1Alpha2Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeResourceClaimTemplateListV1Alpha2Props( - obj: KubeResourceClaimTemplateListV1Alpha2Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeResourceClaimTemplateListV1Alpha2Props(obj: KubeResourceClaimTemplateListV1Alpha2Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => - toJson_KubeResourceClaimTemplateV1Alpha2Props(y), - ), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeResourceClaimTemplateV1Alpha2Props(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13041,31 +12384,23 @@ export interface KubeResourceClassV1Alpha2Props { * @schema io.k8s.api.resource.v1alpha2.ResourceClass#suitableNodes */ readonly suitableNodes?: NodeSelector; + } /** * Converts an object of type 'KubeResourceClassV1Alpha2Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeResourceClassV1Alpha2Props( - obj: KubeResourceClassV1Alpha2Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeResourceClassV1Alpha2Props(obj: KubeResourceClassV1Alpha2Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - driverName: obj.driverName, - parametersRef: toJson_ResourceClassParametersReferenceV1Alpha2( - obj.parametersRef, - ), - suitableNodes: toJson_NodeSelector(obj.suitableNodes), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'driverName': obj.driverName, + 'parametersRef': toJson_ResourceClassParametersReferenceV1Alpha2(obj.parametersRef), + 'suitableNodes': toJson_NodeSelector(obj.suitableNodes), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13088,27 +12423,21 @@ export interface KubeResourceClassListV1Alpha2Props { * @schema io.k8s.api.resource.v1alpha2.ResourceClassList#items */ readonly items: KubeResourceClassV1Alpha2Props[]; + } /** * Converts an object of type 'KubeResourceClassListV1Alpha2Props' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeResourceClassListV1Alpha2Props( - obj: KubeResourceClassListV1Alpha2Props | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeResourceClassListV1Alpha2Props(obj: KubeResourceClassListV1Alpha2Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeResourceClassV1Alpha2Props(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeResourceClassV1Alpha2Props(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13153,30 +12482,24 @@ export interface KubePriorityClassProps { * @schema io.k8s.api.scheduling.v1.PriorityClass#value */ readonly value: number; + } /** * Converts an object of type 'KubePriorityClassProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePriorityClassProps( - obj: KubePriorityClassProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePriorityClassProps(obj: KubePriorityClassProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - description: obj.description, - globalDefault: obj.globalDefault, - preemptionPolicy: obj.preemptionPolicy, - value: obj.value, + 'metadata': toJson_ObjectMeta(obj.metadata), + 'description': obj.description, + 'globalDefault': obj.globalDefault, + 'preemptionPolicy': obj.preemptionPolicy, + 'value': obj.value, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13199,27 +12522,21 @@ export interface KubePriorityClassListProps { * @schema io.k8s.api.scheduling.v1.PriorityClassList#items */ readonly items: KubePriorityClassProps[]; + } /** * Converts an object of type 'KubePriorityClassListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubePriorityClassListProps( - obj: KubePriorityClassListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubePriorityClassListProps(obj: KubePriorityClassListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubePriorityClassProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubePriorityClassProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13242,27 +12559,21 @@ export interface KubeCsiDriverProps { * @schema io.k8s.api.storage.v1.CSIDriver#spec */ readonly spec: CsiDriverSpec; + } /** * Converts an object of type 'KubeCsiDriverProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeCsiDriverProps( - obj: KubeCsiDriverProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeCsiDriverProps(obj: KubeCsiDriverProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_CsiDriverSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_CsiDriverSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13285,27 +12596,21 @@ export interface KubeCsiDriverListProps { * @schema io.k8s.api.storage.v1.CSIDriverList#items */ readonly items: KubeCsiDriverProps[]; + } /** * Converts an object of type 'KubeCsiDriverListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeCsiDriverListProps( - obj: KubeCsiDriverListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeCsiDriverListProps(obj: KubeCsiDriverListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeCsiDriverProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeCsiDriverProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13328,27 +12633,21 @@ export interface KubeCsiNodeProps { * @schema io.k8s.api.storage.v1.CSINode#spec */ readonly spec: CsiNodeSpec; + } /** * Converts an object of type 'KubeCsiNodeProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeCsiNodeProps( - obj: KubeCsiNodeProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeCsiNodeProps(obj: KubeCsiNodeProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_CsiNodeSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_CsiNodeSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13371,27 +12670,21 @@ export interface KubeCsiNodeListProps { * @schema io.k8s.api.storage.v1.CSINodeList#items */ readonly items: KubeCsiNodeProps[]; + } /** * Converts an object of type 'KubeCsiNodeListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeCsiNodeListProps( - obj: KubeCsiNodeListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeCsiNodeListProps(obj: KubeCsiNodeListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeCsiNodeProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeCsiNodeProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13451,30 +12744,24 @@ export interface KubeCsiStorageCapacityProps { * @schema io.k8s.api.storage.v1.CSIStorageCapacity#storageClassName */ readonly storageClassName: string; + } /** * Converts an object of type 'KubeCsiStorageCapacityProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeCsiStorageCapacityProps( - obj: KubeCsiStorageCapacityProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeCsiStorageCapacityProps(obj: KubeCsiStorageCapacityProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - capacity: obj.capacity?.value, - maximumVolumeSize: obj.maximumVolumeSize?.value, - nodeTopology: toJson_LabelSelector(obj.nodeTopology), - storageClassName: obj.storageClassName, + 'metadata': toJson_ObjectMeta(obj.metadata), + 'capacity': obj.capacity?.value, + 'maximumVolumeSize': obj.maximumVolumeSize?.value, + 'nodeTopology': toJson_LabelSelector(obj.nodeTopology), + 'storageClassName': obj.storageClassName, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13497,27 +12784,21 @@ export interface KubeCsiStorageCapacityListProps { * @schema io.k8s.api.storage.v1.CSIStorageCapacityList#items */ readonly items: KubeCsiStorageCapacityProps[]; + } /** * Converts an object of type 'KubeCsiStorageCapacityListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeCsiStorageCapacityListProps( - obj: KubeCsiStorageCapacityListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeCsiStorageCapacityListProps(obj: KubeCsiStorageCapacityListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeCsiStorageCapacityProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeCsiStorageCapacityProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13585,41 +12866,27 @@ export interface KubeStorageClassProps { * @schema io.k8s.api.storage.v1.StorageClass#volumeBindingMode */ readonly volumeBindingMode?: string; + } /** * Converts an object of type 'KubeStorageClassProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeStorageClassProps( - obj: KubeStorageClassProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeStorageClassProps(obj: KubeStorageClassProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - allowVolumeExpansion: obj.allowVolumeExpansion, - allowedTopologies: obj.allowedTopologies?.map((y) => - toJson_TopologySelectorTerm(y), - ), - mountOptions: obj.mountOptions?.map((y) => y), - parameters: - obj.parameters === undefined - ? undefined - : Object.entries(obj.parameters).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - provisioner: obj.provisioner, - reclaimPolicy: obj.reclaimPolicy, - volumeBindingMode: obj.volumeBindingMode, + 'metadata': toJson_ObjectMeta(obj.metadata), + 'allowVolumeExpansion': obj.allowVolumeExpansion, + 'allowedTopologies': obj.allowedTopologies?.map(y => toJson_TopologySelectorTerm(y)), + 'mountOptions': obj.mountOptions?.map(y => y), + 'parameters': ((obj.parameters) === undefined) ? undefined : (Object.entries(obj.parameters).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'provisioner': obj.provisioner, + 'reclaimPolicy': obj.reclaimPolicy, + 'volumeBindingMode': obj.volumeBindingMode, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13642,27 +12909,21 @@ export interface KubeStorageClassListProps { * @schema io.k8s.api.storage.v1.StorageClassList#items */ readonly items: KubeStorageClassProps[]; + } /** * Converts an object of type 'KubeStorageClassListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeStorageClassListProps( - obj: KubeStorageClassListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeStorageClassListProps(obj: KubeStorageClassListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeStorageClassProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeStorageClassProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13687,27 +12948,21 @@ export interface KubeVolumeAttachmentProps { * @schema io.k8s.api.storage.v1.VolumeAttachment#spec */ readonly spec: VolumeAttachmentSpec; + } /** * Converts an object of type 'KubeVolumeAttachmentProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeVolumeAttachmentProps( - obj: KubeVolumeAttachmentProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeVolumeAttachmentProps(obj: KubeVolumeAttachmentProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_VolumeAttachmentSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_VolumeAttachmentSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13730,27 +12985,105 @@ export interface KubeVolumeAttachmentListProps { * @schema io.k8s.api.storage.v1.VolumeAttachmentList#items */ readonly items: KubeVolumeAttachmentProps[]; + } /** * Converts an object of type 'KubeVolumeAttachmentListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeVolumeAttachmentListProps( - obj: KubeVolumeAttachmentListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeVolumeAttachmentListProps(obj: KubeVolumeAttachmentListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeVolumeAttachmentProps(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * VolumeAttributesClass represents a specification of mutable volume attributes defined by the CSI driver. The class can be specified during dynamic provisioning of PersistentVolumeClaims, and changed in the PersistentVolumeClaim spec after provisioning. + * + * @schema io.k8s.api.storage.v1alpha1.VolumeAttributesClass + */ +export interface KubeVolumeAttributesClassV1Alpha1Props { + /** + * Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + * + * @schema io.k8s.api.storage.v1alpha1.VolumeAttributesClass#metadata + */ + readonly metadata?: ObjectMeta; + + /** + * Name of the CSI driver This field is immutable. + * + * @schema io.k8s.api.storage.v1alpha1.VolumeAttributesClass#driverName + */ + readonly driverName: string; + + /** + * parameters hold volume attributes defined by the CSI driver. These values are opaque to the Kubernetes and are passed directly to the CSI driver. The underlying storage provider supports changing these attributes on an existing volume, however the parameters field itself is immutable. To invoke a volume update, a new VolumeAttributesClass should be created with new parameters, and the PersistentVolumeClaim should be updated to reference the new VolumeAttributesClass. + * + * This field is required and must contain at least one key/value pair. The keys cannot be empty, and the maximum number of parameters is 512, with a cumulative max size of 256K. If the CSI driver rejects invalid parameters, the target PersistentVolumeClaim will be set to an "Infeasible" state in the modifyVolumeStatus field. + * + * @schema io.k8s.api.storage.v1alpha1.VolumeAttributesClass#parameters + */ + readonly parameters?: { [key: string]: string }; + +} + +/** + * Converts an object of type 'KubeVolumeAttributesClassV1Alpha1Props' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_KubeVolumeAttributesClassV1Alpha1Props(obj: KubeVolumeAttributesClassV1Alpha1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'metadata': toJson_ObjectMeta(obj.metadata), + 'driverName': obj.driverName, + 'parameters': ((obj.parameters) === undefined) ? undefined : (Object.entries(obj.parameters).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * VolumeAttributesClassList is a collection of VolumeAttributesClass objects. + * + * @schema io.k8s.api.storage.v1alpha1.VolumeAttributesClassList + */ +export interface KubeVolumeAttributesClassListV1Alpha1Props { + /** + * Standard list metadata More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + * + * @schema io.k8s.api.storage.v1alpha1.VolumeAttributesClassList#metadata + */ + readonly metadata?: ListMeta; + + /** + * items is the list of VolumeAttributesClass objects. + * + * @schema io.k8s.api.storage.v1alpha1.VolumeAttributesClassList#items + */ + readonly items: KubeVolumeAttributesClassV1Alpha1Props[]; + +} + +/** + * Converts an object of type 'KubeVolumeAttributesClassListV1Alpha1Props' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_KubeVolumeAttributesClassListV1Alpha1Props(obj: KubeVolumeAttributesClassListV1Alpha1Props | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeVolumeAttachmentProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeVolumeAttributesClassV1Alpha1Props(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13773,27 +13106,21 @@ export interface KubeCustomResourceDefinitionProps { * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinition#spec */ readonly spec: CustomResourceDefinitionSpec; + } /** * Converts an object of type 'KubeCustomResourceDefinitionProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeCustomResourceDefinitionProps( - obj: KubeCustomResourceDefinitionProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeCustomResourceDefinitionProps(obj: KubeCustomResourceDefinitionProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_CustomResourceDefinitionSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_CustomResourceDefinitionSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13816,27 +13143,21 @@ export interface KubeCustomResourceDefinitionListProps { * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionList#items */ readonly items: KubeCustomResourceDefinitionProps[]; + } /** * Converts an object of type 'KubeCustomResourceDefinitionListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeCustomResourceDefinitionListProps( - obj: KubeCustomResourceDefinitionListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeCustomResourceDefinitionListProps(obj: KubeCustomResourceDefinitionListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeCustomResourceDefinitionProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeCustomResourceDefinitionProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13880,30 +13201,24 @@ export interface KubeStatusProps { * @schema io.k8s.apimachinery.pkg.apis.meta.v1.Status#reason */ readonly reason?: string; + } /** * Converts an object of type 'KubeStatusProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeStatusProps( - obj: KubeStatusProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeStatusProps(obj: KubeStatusProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - code: obj.code, - details: toJson_StatusDetails(obj.details), - message: obj.message, - reason: obj.reason, + 'metadata': toJson_ListMeta(obj.metadata), + 'code': obj.code, + 'details': toJson_StatusDetails(obj.details), + 'message': obj.message, + 'reason': obj.reason, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13926,27 +13241,21 @@ export interface KubeApiServiceProps { * @schema io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIService#spec */ readonly spec?: ApiServiceSpec; + } /** * Converts an object of type 'KubeApiServiceProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeApiServiceProps( - obj: KubeApiServiceProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeApiServiceProps(obj: KubeApiServiceProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_ApiServiceSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_ApiServiceSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -13969,27 +13278,21 @@ export interface KubeApiServiceListProps { * @schema io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceList#items */ readonly items: KubeApiServiceProps[]; + } /** * Converts an object of type 'KubeApiServiceListProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KubeApiServiceListProps( - obj: KubeApiServiceListProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KubeApiServiceListProps(obj: KubeApiServiceListProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ListMeta(obj.metadata), - items: obj.items?.map((y) => toJson_KubeApiServiceProps(y)), + 'metadata': toJson_ListMeta(obj.metadata), + 'items': obj.items?.map(y => toJson_KubeApiServiceProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -14117,52 +13420,34 @@ export interface ObjectMeta { * @schema io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta#uid */ readonly uid?: string; + } /** * Converts an object of type 'ObjectMeta' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ObjectMeta( - obj: ObjectMeta | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } - const result = { - annotations: - obj.annotations === undefined - ? undefined - : Object.entries(obj.annotations).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - creationTimestamp: obj.creationTimestamp?.toISOString(), - deletionGracePeriodSeconds: obj.deletionGracePeriodSeconds, - deletionTimestamp: obj.deletionTimestamp?.toISOString(), - finalizers: obj.finalizers?.map((y) => y), - generateName: obj.generateName, - generation: obj.generation, - labels: - obj.labels === undefined - ? undefined - : Object.entries(obj.labels).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - managedFields: obj.managedFields?.map((y) => toJson_ManagedFieldsEntry(y)), - name: obj.name, - namespace: obj.namespace, - ownerReferences: obj.ownerReferences?.map((y) => toJson_OwnerReference(y)), - resourceVersion: obj.resourceVersion, - selfLink: obj.selfLink, - uid: obj.uid, - }; - // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); +export function toJson_ObjectMeta(obj: ObjectMeta | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'annotations': ((obj.annotations) === undefined) ? undefined : (Object.entries(obj.annotations).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'creationTimestamp': obj.creationTimestamp?.toISOString(), + 'deletionGracePeriodSeconds': obj.deletionGracePeriodSeconds, + 'deletionTimestamp': obj.deletionTimestamp?.toISOString(), + 'finalizers': obj.finalizers?.map(y => y), + 'generateName': obj.generateName, + 'generation': obj.generation, + 'labels': ((obj.labels) === undefined) ? undefined : (Object.entries(obj.labels).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'managedFields': obj.managedFields?.map(y => toJson_ManagedFieldsEntry(y)), + 'name': obj.name, + 'namespace': obj.namespace, + 'ownerReferences': obj.ownerReferences?.map(y => toJson_OwnerReference(y)), + 'resourceVersion': obj.resourceVersion, + 'selfLink': obj.selfLink, + 'uid': obj.uid, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -14204,7 +13489,7 @@ export interface MutatingWebhook { * - If failurePolicy=Fail, reject the request * - If failurePolicy=Ignore, the error is ignored and the webhook is skipped * - * This is an alpha feature and managed by the AdmissionWebhookMatchConditions feature gate. + * This is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate. * * @schema io.k8s.api.admissionregistration.v1.MutatingWebhook#matchConditions */ @@ -14312,37 +13597,31 @@ export interface MutatingWebhook { * @schema io.k8s.api.admissionregistration.v1.MutatingWebhook#timeoutSeconds */ readonly timeoutSeconds?: number; + } /** * Converts an object of type 'MutatingWebhook' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_MutatingWebhook( - obj: MutatingWebhook | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_MutatingWebhook(obj: MutatingWebhook | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - admissionReviewVersions: obj.admissionReviewVersions?.map((y) => y), - clientConfig: toJson_WebhookClientConfig(obj.clientConfig), - failurePolicy: obj.failurePolicy, - matchConditions: obj.matchConditions?.map((y) => toJson_MatchCondition(y)), - matchPolicy: obj.matchPolicy, - name: obj.name, - namespaceSelector: toJson_LabelSelector(obj.namespaceSelector), - objectSelector: toJson_LabelSelector(obj.objectSelector), - reinvocationPolicy: obj.reinvocationPolicy, - rules: obj.rules?.map((y) => toJson_RuleWithOperations(y)), - sideEffects: obj.sideEffects, - timeoutSeconds: obj.timeoutSeconds, + 'admissionReviewVersions': obj.admissionReviewVersions?.map(y => y), + 'clientConfig': toJson_WebhookClientConfig(obj.clientConfig), + 'failurePolicy': obj.failurePolicy, + 'matchConditions': obj.matchConditions?.map(y => toJson_MatchCondition(y)), + 'matchPolicy': obj.matchPolicy, + 'name': obj.name, + 'namespaceSelector': toJson_LabelSelector(obj.namespaceSelector), + 'objectSelector': toJson_LabelSelector(obj.objectSelector), + 'reinvocationPolicy': obj.reinvocationPolicy, + 'rules': obj.rules?.map(y => toJson_RuleWithOperations(y)), + 'sideEffects': obj.sideEffects, + 'timeoutSeconds': obj.timeoutSeconds, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -14379,29 +13658,23 @@ export interface ListMeta { * @schema io.k8s.apimachinery.pkg.apis.meta.v1.ListMeta#selfLink */ readonly selfLink?: string; + } /** * Converts an object of type 'ListMeta' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ListMeta( - obj: ListMeta | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ListMeta(obj: ListMeta | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - continue: obj.continue, - remainingItemCount: obj.remainingItemCount, - resourceVersion: obj.resourceVersion, - selfLink: obj.selfLink, + 'continue': obj.continue, + 'remainingItemCount': obj.remainingItemCount, + 'resourceVersion': obj.resourceVersion, + 'selfLink': obj.selfLink, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -14443,7 +13716,7 @@ export interface ValidatingWebhook { * - If failurePolicy=Fail, reject the request * - If failurePolicy=Ignore, the error is ignored and the webhook is skipped * - * This is an alpha feature and managed by the AdmissionWebhookMatchConditions feature gate. + * This is a beta feature and managed by the AdmissionWebhookMatchConditions feature gate. * * @schema io.k8s.api.admissionregistration.v1.ValidatingWebhook#matchConditions */ @@ -14537,36 +13810,30 @@ export interface ValidatingWebhook { * @schema io.k8s.api.admissionregistration.v1.ValidatingWebhook#timeoutSeconds */ readonly timeoutSeconds?: number; + } /** * Converts an object of type 'ValidatingWebhook' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ValidatingWebhook( - obj: ValidatingWebhook | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ValidatingWebhook(obj: ValidatingWebhook | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - admissionReviewVersions: obj.admissionReviewVersions?.map((y) => y), - clientConfig: toJson_WebhookClientConfig(obj.clientConfig), - failurePolicy: obj.failurePolicy, - matchConditions: obj.matchConditions?.map((y) => toJson_MatchCondition(y)), - matchPolicy: obj.matchPolicy, - name: obj.name, - namespaceSelector: toJson_LabelSelector(obj.namespaceSelector), - objectSelector: toJson_LabelSelector(obj.objectSelector), - rules: obj.rules?.map((y) => toJson_RuleWithOperations(y)), - sideEffects: obj.sideEffects, - timeoutSeconds: obj.timeoutSeconds, + 'admissionReviewVersions': obj.admissionReviewVersions?.map(y => y), + 'clientConfig': toJson_WebhookClientConfig(obj.clientConfig), + 'failurePolicy': obj.failurePolicy, + 'matchConditions': obj.matchConditions?.map(y => toJson_MatchCondition(y)), + 'matchPolicy': obj.matchPolicy, + 'name': obj.name, + 'namespaceSelector': toJson_LabelSelector(obj.namespaceSelector), + 'objectSelector': toJson_LabelSelector(obj.objectSelector), + 'rules': obj.rules?.map(y => toJson_RuleWithOperations(y)), + 'sideEffects': obj.sideEffects, + 'timeoutSeconds': obj.timeoutSeconds, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -14635,35 +13902,35 @@ export interface ValidatingAdmissionPolicySpecV1Alpha1 { * @schema io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicySpec#validations */ readonly validations?: ValidationV1Alpha1[]; + + /** + * Variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy. + * + * The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicySpec#variables + */ + readonly variables?: VariableV1Alpha1[]; + } /** * Converts an object of type 'ValidatingAdmissionPolicySpecV1Alpha1' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ValidatingAdmissionPolicySpecV1Alpha1( - obj: ValidatingAdmissionPolicySpecV1Alpha1 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ValidatingAdmissionPolicySpecV1Alpha1(obj: ValidatingAdmissionPolicySpecV1Alpha1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - auditAnnotations: obj.auditAnnotations?.map((y) => - toJson_AuditAnnotationV1Alpha1(y), - ), - failurePolicy: obj.failurePolicy, - matchConditions: obj.matchConditions?.map((y) => - toJson_MatchConditionV1Alpha1(y), - ), - matchConstraints: toJson_MatchResourcesV1Alpha1(obj.matchConstraints), - paramKind: toJson_ParamKindV1Alpha1(obj.paramKind), - validations: obj.validations?.map((y) => toJson_ValidationV1Alpha1(y)), + 'auditAnnotations': obj.auditAnnotations?.map(y => toJson_AuditAnnotationV1Alpha1(y)), + 'failurePolicy': obj.failurePolicy, + 'matchConditions': obj.matchConditions?.map(y => toJson_MatchConditionV1Alpha1(y)), + 'matchConstraints': toJson_MatchResourcesV1Alpha1(obj.matchConstraints), + 'paramKind': toJson_ParamKindV1Alpha1(obj.paramKind), + 'validations': obj.validations?.map(y => toJson_ValidationV1Alpha1(y)), + 'variables': obj.variables?.map(y => toJson_VariableV1Alpha1(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -14681,7 +13948,7 @@ export interface ValidatingAdmissionPolicyBindingSpecV1Alpha1 { readonly matchResources?: MatchResourcesV1Alpha1; /** - * ParamRef specifies the parameter resource used to configure the admission control policy. It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. + * paramRef specifies the parameter resource used to configure the admission control policy. It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param. * * @schema io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingSpec#paramRef */ @@ -14718,29 +13985,191 @@ export interface ValidatingAdmissionPolicyBindingSpecV1Alpha1 { * @schema io.k8s.api.admissionregistration.v1alpha1.ValidatingAdmissionPolicyBindingSpec#validationActions */ readonly validationActions?: string[]; + } /** * Converts an object of type 'ValidatingAdmissionPolicyBindingSpecV1Alpha1' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ValidatingAdmissionPolicyBindingSpecV1Alpha1( - obj: ValidatingAdmissionPolicyBindingSpecV1Alpha1 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ValidatingAdmissionPolicyBindingSpecV1Alpha1(obj: ValidatingAdmissionPolicyBindingSpecV1Alpha1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'matchResources': toJson_MatchResourcesV1Alpha1(obj.matchResources), + 'paramRef': toJson_ParamRefV1Alpha1(obj.paramRef), + 'policyName': obj.policyName, + 'validationActions': obj.validationActions?.map(y => y), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicySpec + */ +export interface ValidatingAdmissionPolicySpecV1Beta1 { + /** + * auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicySpec#auditAnnotations + */ + readonly auditAnnotations?: AuditAnnotationV1Beta1[]; + + /** + * failurePolicy defines how to handle failures for the admission policy. Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings. + * + * A policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource. + * + * failurePolicy does not define how validations that evaluate to false are handled. + * + * When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced. + * + * Allowed values are Ignore or Fail. Defaults to Fail. + * + * @default Fail. + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicySpec#failurePolicy + */ + readonly failurePolicy?: string; + + /** + * MatchConditions is a list of conditions that must be met for a request to be validated. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed. + * + * If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions. + * + * The exact matching logic is (in order): + * 1. If ANY matchCondition evaluates to FALSE, the policy is skipped. + * 2. If ALL matchConditions evaluate to TRUE, the policy is evaluated. + * 3. If any matchCondition evaluates to an error (but none are FALSE): + * - If failurePolicy=Fail, reject the request + * - If failurePolicy=Ignore, the policy is skipped + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicySpec#matchConditions + */ + readonly matchConditions?: MatchConditionV1Beta1[]; + + /** + * MatchConstraints specifies what resources this policy is designed to validate. The AdmissionPolicy cares about a request if it matches _all_ Constraints. However, in order to prevent clusters from being put into an unstable state that cannot be recovered from via the API ValidatingAdmissionPolicy cannot match ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding. Required. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicySpec#matchConstraints + */ + readonly matchConstraints?: MatchResourcesV1Beta1; + + /** + * ParamKind specifies the kind of resources used to parameterize this policy. If absent, there are no parameters for this policy and the param CEL variable will not be provided to validation expressions. If ParamKind refers to a non-existent kind, this policy definition is mis-configured and the FailurePolicy is applied. If paramKind is specified but paramRef is unset in ValidatingAdmissionPolicyBinding, the params variable will be null. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicySpec#paramKind + */ + readonly paramKind?: ParamKindV1Beta1; + + /** + * Validations contain CEL expressions which is used to apply the validation. Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicySpec#validations + */ + readonly validations?: ValidationV1Beta1[]; + + /** + * Variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy. + * + * The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicySpec#variables + */ + readonly variables?: VariableV1Beta1[]; + +} + +/** + * Converts an object of type 'ValidatingAdmissionPolicySpecV1Beta1' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ValidatingAdmissionPolicySpecV1Beta1(obj: ValidatingAdmissionPolicySpecV1Beta1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'auditAnnotations': obj.auditAnnotations?.map(y => toJson_AuditAnnotationV1Beta1(y)), + 'failurePolicy': obj.failurePolicy, + 'matchConditions': obj.matchConditions?.map(y => toJson_MatchConditionV1Beta1(y)), + 'matchConstraints': toJson_MatchResourcesV1Beta1(obj.matchConstraints), + 'paramKind': toJson_ParamKindV1Beta1(obj.paramKind), + 'validations': obj.validations?.map(y => toJson_ValidationV1Beta1(y)), + 'variables': obj.variables?.map(y => toJson_VariableV1Beta1(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ValidatingAdmissionPolicyBindingSpec is the specification of the ValidatingAdmissionPolicyBinding. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingSpec + */ +export interface ValidatingAdmissionPolicyBindingSpecV1Beta1 { + /** + * MatchResources declares what resources match this binding and will be validated by it. Note that this is intersected with the policy's matchConstraints, so only requests that are matched by the policy can be selected by this. If this is unset, all resources matched by the policy are validated by this binding When resourceRules is unset, it does not constrain resource matching. If a resource is matched by the other fields of this object, it will be validated. Note that this is differs from ValidatingAdmissionPolicy matchConstraints, where resourceRules are required. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingSpec#matchResources + */ + readonly matchResources?: MatchResourcesV1Beta1; + + /** + * paramRef specifies the parameter resource used to configure the admission control policy. It should point to a resource of the type specified in ParamKind of the bound ValidatingAdmissionPolicy. If the policy specifies a ParamKind and the resource referred to by ParamRef does not exist, this binding is considered mis-configured and the FailurePolicy of the ValidatingAdmissionPolicy applied. If the policy does not specify a ParamKind then this field is ignored, and the rules are evaluated without a param. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingSpec#paramRef + */ + readonly paramRef?: ParamRefV1Beta1; + + /** + * PolicyName references a ValidatingAdmissionPolicy name which the ValidatingAdmissionPolicyBinding binds to. If the referenced resource does not exist, this binding is considered invalid and will be ignored Required. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingSpec#policyName + */ + readonly policyName?: string; + + /** + * validationActions declares how Validations of the referenced ValidatingAdmissionPolicy are enforced. If a validation evaluates to false it is always enforced according to these actions. + * + * Failures defined by the ValidatingAdmissionPolicy's FailurePolicy are enforced according to these actions only if the FailurePolicy is set to Fail, otherwise the failures are ignored. This includes compilation errors, runtime errors and misconfigurations of the policy. + * + * validationActions is declared as a set of action values. Order does not matter. validationActions may not contain duplicates of the same action. + * + * The supported actions values are: + * + * "Deny" specifies that a validation failure results in a denied request. + * + * "Warn" specifies that a validation failure is reported to the request client in HTTP Warning headers, with a warning code of 299. Warnings can be sent both for allowed or denied admission responses. + * + * "Audit" specifies that a validation failure is included in the published audit event for the request. The audit event will contain a `validation.policy.admission.k8s.io/validation_failure` audit annotation with a value containing the details of the validation failures, formatted as a JSON list of objects, each with the following fields: - message: The validation failure message string - policy: The resource name of the ValidatingAdmissionPolicy - binding: The resource name of the ValidatingAdmissionPolicyBinding - expressionIndex: The index of the failed validations in the ValidatingAdmissionPolicy - validationActions: The enforcement actions enacted for the validation failure Example audit annotation: `"validation.policy.admission.k8s.io/validation_failure": "[{"message": "Invalid value", {"policy": "policy.example.com", {"binding": "policybinding.example.com", {"expressionIndex": "1", {"validationActions": ["Audit"]}]"` + * + * Clients should expect to handle additional values by ignoring any values not recognized. + * + * "Deny" and "Warn" may not be used together since this combination needlessly duplicates the validation failure both in the API response body and the HTTP warning headers. + * + * Required. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ValidatingAdmissionPolicyBindingSpec#validationActions + */ + readonly validationActions?: string[]; + +} + +/** + * Converts an object of type 'ValidatingAdmissionPolicyBindingSpecV1Beta1' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ValidatingAdmissionPolicyBindingSpecV1Beta1(obj: ValidatingAdmissionPolicyBindingSpecV1Beta1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - matchResources: toJson_MatchResourcesV1Alpha1(obj.matchResources), - paramRef: toJson_ParamRefV1Alpha1(obj.paramRef), - policyName: obj.policyName, - validationActions: obj.validationActions?.map((y) => y), + 'matchResources': toJson_MatchResourcesV1Beta1(obj.matchResources), + 'paramRef': toJson_ParamRefV1Beta1(obj.paramRef), + 'policyName': obj.policyName, + 'validationActions': obj.validationActions?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -14786,30 +14215,24 @@ export interface DaemonSetSpec { * @schema io.k8s.api.apps.v1.DaemonSetSpec#updateStrategy */ readonly updateStrategy?: DaemonSetUpdateStrategy; + } /** * Converts an object of type 'DaemonSetSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_DaemonSetSpec( - obj: DaemonSetSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_DaemonSetSpec(obj: DaemonSetSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - minReadySeconds: obj.minReadySeconds, - revisionHistoryLimit: obj.revisionHistoryLimit, - selector: toJson_LabelSelector(obj.selector), - template: toJson_PodTemplateSpec(obj.template), - updateStrategy: toJson_DaemonSetUpdateStrategy(obj.updateStrategy), + 'minReadySeconds': obj.minReadySeconds, + 'revisionHistoryLimit': obj.revisionHistoryLimit, + 'selector': toJson_LabelSelector(obj.selector), + 'template': toJson_PodTemplateSpec(obj.template), + 'updateStrategy': toJson_DaemonSetUpdateStrategy(obj.updateStrategy), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -14878,33 +14301,27 @@ export interface DeploymentSpec { * @schema io.k8s.api.apps.v1.DeploymentSpec#template */ readonly template: PodTemplateSpec; + } /** * Converts an object of type 'DeploymentSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_DeploymentSpec( - obj: DeploymentSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_DeploymentSpec(obj: DeploymentSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - minReadySeconds: obj.minReadySeconds, - paused: obj.paused, - progressDeadlineSeconds: obj.progressDeadlineSeconds, - replicas: obj.replicas, - revisionHistoryLimit: obj.revisionHistoryLimit, - selector: toJson_LabelSelector(obj.selector), - strategy: toJson_DeploymentStrategy(obj.strategy), - template: toJson_PodTemplateSpec(obj.template), + 'minReadySeconds': obj.minReadySeconds, + 'paused': obj.paused, + 'progressDeadlineSeconds': obj.progressDeadlineSeconds, + 'replicas': obj.replicas, + 'revisionHistoryLimit': obj.revisionHistoryLimit, + 'selector': toJson_LabelSelector(obj.selector), + 'strategy': toJson_DeploymentStrategy(obj.strategy), + 'template': toJson_PodTemplateSpec(obj.template), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -14943,29 +14360,23 @@ export interface ReplicaSetSpec { * @schema io.k8s.api.apps.v1.ReplicaSetSpec#template */ readonly template?: PodTemplateSpec; + } /** * Converts an object of type 'ReplicaSetSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ReplicaSetSpec( - obj: ReplicaSetSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ReplicaSetSpec(obj: ReplicaSetSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - minReadySeconds: obj.minReadySeconds, - replicas: obj.replicas, - selector: toJson_LabelSelector(obj.selector), - template: toJson_PodTemplateSpec(obj.template), + 'minReadySeconds': obj.minReadySeconds, + 'replicas': obj.replicas, + 'selector': toJson_LabelSelector(obj.selector), + 'template': toJson_PodTemplateSpec(obj.template), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -15052,41 +14463,30 @@ export interface StatefulSetSpec { * @schema io.k8s.api.apps.v1.StatefulSetSpec#volumeClaimTemplates */ readonly volumeClaimTemplates?: KubePersistentVolumeClaimProps[]; + } /** * Converts an object of type 'StatefulSetSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_StatefulSetSpec( - obj: StatefulSetSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_StatefulSetSpec(obj: StatefulSetSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - minReadySeconds: obj.minReadySeconds, - ordinals: toJson_StatefulSetOrdinals(obj.ordinals), - persistentVolumeClaimRetentionPolicy: - toJson_StatefulSetPersistentVolumeClaimRetentionPolicy( - obj.persistentVolumeClaimRetentionPolicy, - ), - podManagementPolicy: obj.podManagementPolicy, - replicas: obj.replicas, - revisionHistoryLimit: obj.revisionHistoryLimit, - selector: toJson_LabelSelector(obj.selector), - serviceName: obj.serviceName, - template: toJson_PodTemplateSpec(obj.template), - updateStrategy: toJson_StatefulSetUpdateStrategy(obj.updateStrategy), - volumeClaimTemplates: obj.volumeClaimTemplates?.map((y) => - toJson_KubePersistentVolumeClaimProps(y), - ), + 'minReadySeconds': obj.minReadySeconds, + 'ordinals': toJson_StatefulSetOrdinals(obj.ordinals), + 'persistentVolumeClaimRetentionPolicy': toJson_StatefulSetPersistentVolumeClaimRetentionPolicy(obj.persistentVolumeClaimRetentionPolicy), + 'podManagementPolicy': obj.podManagementPolicy, + 'replicas': obj.replicas, + 'revisionHistoryLimit': obj.revisionHistoryLimit, + 'selector': toJson_LabelSelector(obj.selector), + 'serviceName': obj.serviceName, + 'template': toJson_PodTemplateSpec(obj.template), + 'updateStrategy': toJson_StatefulSetUpdateStrategy(obj.updateStrategy), + 'volumeClaimTemplates': obj.volumeClaimTemplates?.map(y => toJson_KubePersistentVolumeClaimProps(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -15116,28 +14516,22 @@ export interface TokenRequestSpec { * @schema io.k8s.api.authentication.v1.TokenRequestSpec#expirationSeconds */ readonly expirationSeconds?: number; + } /** * Converts an object of type 'TokenRequestSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_TokenRequestSpec( - obj: TokenRequestSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_TokenRequestSpec(obj: TokenRequestSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - audiences: obj.audiences?.map((y) => y), - boundObjectRef: toJson_BoundObjectReference(obj.boundObjectRef), - expirationSeconds: obj.expirationSeconds, + 'audiences': obj.audiences?.map(y => y), + 'boundObjectRef': toJson_BoundObjectReference(obj.boundObjectRef), + 'expirationSeconds': obj.expirationSeconds, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -15160,27 +14554,21 @@ export interface TokenReviewSpec { * @schema io.k8s.api.authentication.v1.TokenReviewSpec#token */ readonly token?: string; + } /** * Converts an object of type 'TokenReviewSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_TokenReviewSpec( - obj: TokenReviewSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_TokenReviewSpec(obj: TokenReviewSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - audiences: obj.audiences?.map((y) => y), - token: obj.token, + 'audiences': obj.audiences?.map(y => y), + 'token': obj.token, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -15231,40 +14619,25 @@ export interface SubjectAccessReviewSpec { * @schema io.k8s.api.authorization.v1.SubjectAccessReviewSpec#user */ readonly user?: string; + } /** * Converts an object of type 'SubjectAccessReviewSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_SubjectAccessReviewSpec( - obj: SubjectAccessReviewSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_SubjectAccessReviewSpec(obj: SubjectAccessReviewSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - extra: - obj.extra === undefined - ? undefined - : Object.entries(obj.extra).reduce( - (r, i) => - i[1] === undefined ? r : { ...r, [i[0]]: i[1]?.map((y) => y) }, - {}, - ), - groups: obj.groups?.map((y) => y), - nonResourceAttributes: toJson_NonResourceAttributes( - obj.nonResourceAttributes, - ), - resourceAttributes: toJson_ResourceAttributes(obj.resourceAttributes), - uid: obj.uid, - user: obj.user, + 'extra': ((obj.extra) === undefined) ? undefined : (Object.entries(obj.extra).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1]?.map(y => y) }), {})), + 'groups': obj.groups?.map(y => y), + 'nonResourceAttributes': toJson_NonResourceAttributes(obj.nonResourceAttributes), + 'resourceAttributes': toJson_ResourceAttributes(obj.resourceAttributes), + 'uid': obj.uid, + 'user': obj.user, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -15287,29 +14660,21 @@ export interface SelfSubjectAccessReviewSpec { * @schema io.k8s.api.authorization.v1.SelfSubjectAccessReviewSpec#resourceAttributes */ readonly resourceAttributes?: ResourceAttributes; + } /** * Converts an object of type 'SelfSubjectAccessReviewSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_SelfSubjectAccessReviewSpec( - obj: SelfSubjectAccessReviewSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_SelfSubjectAccessReviewSpec(obj: SelfSubjectAccessReviewSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - nonResourceAttributes: toJson_NonResourceAttributes( - obj.nonResourceAttributes, - ), - resourceAttributes: toJson_ResourceAttributes(obj.resourceAttributes), + 'nonResourceAttributes': toJson_NonResourceAttributes(obj.nonResourceAttributes), + 'resourceAttributes': toJson_ResourceAttributes(obj.resourceAttributes), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -15325,26 +14690,20 @@ export interface SelfSubjectRulesReviewSpec { * @schema io.k8s.api.authorization.v1.SelfSubjectRulesReviewSpec#namespace */ readonly namespace?: string; + } /** * Converts an object of type 'SelfSubjectRulesReviewSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_SelfSubjectRulesReviewSpec( - obj: SelfSubjectRulesReviewSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_SelfSubjectRulesReviewSpec(obj: SelfSubjectRulesReviewSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - namespace: obj.namespace, + 'namespace': obj.namespace, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -15381,29 +14740,23 @@ export interface HorizontalPodAutoscalerSpec { * @schema io.k8s.api.autoscaling.v1.HorizontalPodAutoscalerSpec#targetCPUUtilizationPercentage */ readonly targetCpuUtilizationPercentage?: number; + } /** * Converts an object of type 'HorizontalPodAutoscalerSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_HorizontalPodAutoscalerSpec( - obj: HorizontalPodAutoscalerSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_HorizontalPodAutoscalerSpec(obj: HorizontalPodAutoscalerSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - maxReplicas: obj.maxReplicas, - minReplicas: obj.minReplicas, - scaleTargetRef: toJson_CrossVersionObjectReference(obj.scaleTargetRef), - targetCPUUtilizationPercentage: obj.targetCpuUtilizationPercentage, + 'maxReplicas': obj.maxReplicas, + 'minReplicas': obj.minReplicas, + 'scaleTargetRef': toJson_CrossVersionObjectReference(obj.scaleTargetRef), + 'targetCPUUtilizationPercentage': obj.targetCpuUtilizationPercentage, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -15419,26 +14772,20 @@ export interface ScaleSpec { * @schema io.k8s.api.autoscaling.v1.ScaleSpec#replicas */ readonly replicas?: number; + } /** * Converts an object of type 'ScaleSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ScaleSpec( - obj: ScaleSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ScaleSpec(obj: ScaleSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - replicas: obj.replicas, + 'replicas': obj.replicas, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -15482,30 +14829,24 @@ export interface HorizontalPodAutoscalerSpecV2 { * @schema io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerSpec#scaleTargetRef */ readonly scaleTargetRef: CrossVersionObjectReferenceV2; + } /** * Converts an object of type 'HorizontalPodAutoscalerSpecV2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_HorizontalPodAutoscalerSpecV2( - obj: HorizontalPodAutoscalerSpecV2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_HorizontalPodAutoscalerSpecV2(obj: HorizontalPodAutoscalerSpecV2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - behavior: toJson_HorizontalPodAutoscalerBehaviorV2(obj.behavior), - maxReplicas: obj.maxReplicas, - metrics: obj.metrics?.map((y) => toJson_MetricSpecV2(y)), - minReplicas: obj.minReplicas, - scaleTargetRef: toJson_CrossVersionObjectReferenceV2(obj.scaleTargetRef), + 'behavior': toJson_HorizontalPodAutoscalerBehaviorV2(obj.behavior), + 'maxReplicas': obj.maxReplicas, + 'metrics': obj.metrics?.map(y => toJson_MetricSpecV2(y)), + 'minReplicas': obj.minReplicas, + 'scaleTargetRef': toJson_CrossVersionObjectReferenceV2(obj.scaleTargetRef), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -15575,33 +14916,27 @@ export interface CronJobSpec { * @schema io.k8s.api.batch.v1.CronJobSpec#timeZone */ readonly timeZone?: string; + } /** * Converts an object of type 'CronJobSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CronJobSpec( - obj: CronJobSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CronJobSpec(obj: CronJobSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - concurrencyPolicy: obj.concurrencyPolicy, - failedJobsHistoryLimit: obj.failedJobsHistoryLimit, - jobTemplate: toJson_JobTemplateSpec(obj.jobTemplate), - schedule: obj.schedule, - startingDeadlineSeconds: obj.startingDeadlineSeconds, - successfulJobsHistoryLimit: obj.successfulJobsHistoryLimit, - suspend: obj.suspend, - timeZone: obj.timeZone, + 'concurrencyPolicy': obj.concurrencyPolicy, + 'failedJobsHistoryLimit': obj.failedJobsHistoryLimit, + 'jobTemplate': toJson_JobTemplateSpec(obj.jobTemplate), + 'schedule': obj.schedule, + 'startingDeadlineSeconds': obj.startingDeadlineSeconds, + 'successfulJobsHistoryLimit': obj.successfulJobsHistoryLimit, + 'suspend': obj.suspend, + 'timeZone': obj.timeZone, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -15626,6 +14961,13 @@ export interface JobSpec { */ readonly backoffLimit?: number; + /** + * Specifies the limit for the number of retries within an index before marking this index as failed. When enabled the number of failures per index is kept in the pod's batch.kubernetes.io/job-index-failure-count annotation. It can only be set when Job's completionMode=Indexed, and the Pod's restart policy is Never. The field is immutable. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). + * + * @schema io.k8s.api.batch.v1.JobSpec#backoffLimitPerIndex + */ + readonly backoffLimitPerIndex?: number; + /** * completionMode specifies how Pod completions are tracked. It can be `NonIndexed` (default) or `Indexed`. * @@ -15653,6 +14995,13 @@ export interface JobSpec { */ readonly manualSelector?: boolean; + /** + * Specifies the maximal number of failed indexes before marking the Job as failed, when backoffLimitPerIndex is set. Once the number of failed indexes exceeds this number the entire Job is marked as Failed and its execution is terminated. When left as null the job continues execution of all of its indexes and is marked with the `Complete` Job condition. It can only be specified when backoffLimitPerIndex is set. It can be null or up to completions. It is required and must be less than or equal to 10^4 when is completions greater than 10^5. This field is beta-level. It can be used when the `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). + * + * @schema io.k8s.api.batch.v1.JobSpec#maxFailedIndexes + */ + readonly maxFailedIndexes?: number; + /** * Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ * @@ -15663,12 +15012,24 @@ export interface JobSpec { /** * Specifies the policy of handling failed pods. In particular, it allows to specify the set of actions and conditions which need to be satisfied to take the associated action. If empty, the default behaviour applies - the counter of failed pods, represented by the jobs's .status.failed field, is incremented and it is checked against the backoffLimit. This field cannot be used in combination with restartPolicy=OnFailure. * - * This field is alpha-level. To use this field, you must enable the `JobPodFailurePolicy` feature gate (disabled by default). + * This field is beta-level. It can be used when the `JobPodFailurePolicy` feature gate is enabled (enabled by default). * * @schema io.k8s.api.batch.v1.JobSpec#podFailurePolicy */ readonly podFailurePolicy?: PodFailurePolicy; + /** + * podReplacementPolicy specifies when to create replacement Pods. Possible values are: - TerminatingOrFailed means that we recreate pods + * when they are terminating (has a metadata.deletionTimestamp) or failed. + * - Failed means to wait until a previously created Pod is fully terminated (has phase + * Failed or Succeeded) before creating a replacement Pod. + * + * When using podFailurePolicy, Failed is the the only allowed value. TerminatingOrFailed and Failed are allowed values when podFailurePolicy is not in use. This is an beta field. To use this, enable the JobPodReplacementPolicy feature toggle. This is on by default. + * + * @schema io.k8s.api.batch.v1.JobSpec#podReplacementPolicy + */ + readonly podReplacementPolicy?: string; + /** * A label query over pods that should match the pod count. Normally, the system sets this field for you. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors * @@ -15697,36 +15058,33 @@ export interface JobSpec { * @schema io.k8s.api.batch.v1.JobSpec#ttlSecondsAfterFinished */ readonly ttlSecondsAfterFinished?: number; + } /** * Converts an object of type 'JobSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_JobSpec( - obj: JobSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_JobSpec(obj: JobSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - activeDeadlineSeconds: obj.activeDeadlineSeconds, - backoffLimit: obj.backoffLimit, - completionMode: obj.completionMode, - completions: obj.completions, - manualSelector: obj.manualSelector, - parallelism: obj.parallelism, - podFailurePolicy: toJson_PodFailurePolicy(obj.podFailurePolicy), - selector: toJson_LabelSelector(obj.selector), - suspend: obj.suspend, - template: toJson_PodTemplateSpec(obj.template), - ttlSecondsAfterFinished: obj.ttlSecondsAfterFinished, + 'activeDeadlineSeconds': obj.activeDeadlineSeconds, + 'backoffLimit': obj.backoffLimit, + 'backoffLimitPerIndex': obj.backoffLimitPerIndex, + 'completionMode': obj.completionMode, + 'completions': obj.completions, + 'manualSelector': obj.manualSelector, + 'maxFailedIndexes': obj.maxFailedIndexes, + 'parallelism': obj.parallelism, + 'podFailurePolicy': toJson_PodFailurePolicy(obj.podFailurePolicy), + 'podReplacementPolicy': obj.podReplacementPolicy, + 'selector': toJson_LabelSelector(obj.selector), + 'suspend': obj.suspend, + 'template': toJson_PodTemplateSpec(obj.template), + 'ttlSecondsAfterFinished': obj.ttlSecondsAfterFinished, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -15835,40 +15193,27 @@ export interface CertificateSigningRequestSpec { * @schema io.k8s.api.certificates.v1.CertificateSigningRequestSpec#username */ readonly username?: string; + } /** * Converts an object of type 'CertificateSigningRequestSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CertificateSigningRequestSpec( - obj: CertificateSigningRequestSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CertificateSigningRequestSpec(obj: CertificateSigningRequestSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - expirationSeconds: obj.expirationSeconds, - extra: - obj.extra === undefined - ? undefined - : Object.entries(obj.extra).reduce( - (r, i) => - i[1] === undefined ? r : { ...r, [i[0]]: i[1]?.map((y) => y) }, - {}, - ), - groups: obj.groups?.map((y) => y), - request: obj.request, - signerName: obj.signerName, - uid: obj.uid, - usages: obj.usages?.map((y) => y), - username: obj.username, + 'expirationSeconds': obj.expirationSeconds, + 'extra': ((obj.extra) === undefined) ? undefined : (Object.entries(obj.extra).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1]?.map(y => y) }), {})), + 'groups': obj.groups?.map(y => y), + 'request': obj.request, + 'signerName': obj.signerName, + 'uid': obj.uid, + 'usages': obj.usages?.map(y => y), + 'username': obj.username, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -15903,27 +15248,21 @@ export interface ClusterTrustBundleSpecV1Alpha1 { * @schema io.k8s.api.certificates.v1alpha1.ClusterTrustBundleSpec#trustBundle */ readonly trustBundle: string; + } /** * Converts an object of type 'ClusterTrustBundleSpecV1Alpha1' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ClusterTrustBundleSpecV1Alpha1( - obj: ClusterTrustBundleSpecV1Alpha1 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ClusterTrustBundleSpecV1Alpha1(obj: ClusterTrustBundleSpecV1Alpha1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - signerName: obj.signerName, - trustBundle: obj.trustBundle, + 'signerName': obj.signerName, + 'trustBundle': obj.trustBundle, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -15967,30 +15306,24 @@ export interface LeaseSpec { * @schema io.k8s.api.coordination.v1.LeaseSpec#renewTime */ readonly renewTime?: Date; + } /** * Converts an object of type 'LeaseSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_LeaseSpec( - obj: LeaseSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_LeaseSpec(obj: LeaseSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - acquireTime: obj.acquireTime?.toISOString(), - holderIdentity: obj.holderIdentity, - leaseDurationSeconds: obj.leaseDurationSeconds, - leaseTransitions: obj.leaseTransitions, - renewTime: obj.renewTime?.toISOString(), + 'acquireTime': obj.acquireTime?.toISOString(), + 'holderIdentity': obj.holderIdentity, + 'leaseDurationSeconds': obj.leaseDurationSeconds, + 'leaseTransitions': obj.leaseTransitions, + 'renewTime': obj.renewTime?.toISOString(), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -16048,32 +15381,26 @@ export interface ObjectReference { * @schema io.k8s.api.core.v1.ObjectReference#uid */ readonly uid?: string; + } /** * Converts an object of type 'ObjectReference' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ObjectReference( - obj: ObjectReference | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ObjectReference(obj: ObjectReference | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiVersion: obj.apiVersion, - fieldPath: obj.fieldPath, - kind: obj.kind, - name: obj.name, - namespace: obj.namespace, - resourceVersion: obj.resourceVersion, - uid: obj.uid, + 'apiVersion': obj.apiVersion, + 'fieldPath': obj.fieldPath, + 'kind': obj.kind, + 'name': obj.name, + 'namespace': obj.namespace, + 'resourceVersion': obj.resourceVersion, + 'uid': obj.uid, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -16110,29 +15437,23 @@ export interface ComponentCondition { * @schema io.k8s.api.core.v1.ComponentCondition#type */ readonly type: string; + } /** * Converts an object of type 'ComponentCondition' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ComponentCondition( - obj: ComponentCondition | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ComponentCondition(obj: ComponentCondition | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - error: obj.error, - message: obj.message, - status: obj.status, - type: obj.type, + 'error': obj.error, + 'message': obj.message, + 'status': obj.status, + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -16172,30 +15493,22 @@ export interface EndpointSubset { * @schema io.k8s.api.core.v1.EndpointSubset#ports */ readonly ports?: EndpointPort[]; + } /** * Converts an object of type 'EndpointSubset' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_EndpointSubset( - obj: EndpointSubset | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_EndpointSubset(obj: EndpointSubset | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - addresses: obj.addresses?.map((y) => toJson_EndpointAddress(y)), - notReadyAddresses: obj.notReadyAddresses?.map((y) => - toJson_EndpointAddress(y), - ), - ports: obj.ports?.map((y) => toJson_EndpointPort(y)), + 'addresses': obj.addresses?.map(y => toJson_EndpointAddress(y)), + 'notReadyAddresses': obj.notReadyAddresses?.map(y => toJson_EndpointAddress(y)), + 'ports': obj.ports?.map(y => toJson_EndpointPort(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -16218,27 +15531,21 @@ export interface EventSource { * @schema io.k8s.api.core.v1.EventSource#host */ readonly host?: string; + } /** * Converts an object of type 'EventSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_EventSource( - obj: EventSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_EventSource(obj: EventSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - component: obj.component, - host: obj.host, + 'component': obj.component, + 'host': obj.host, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -16261,27 +15568,21 @@ export interface EventSeries { * @schema io.k8s.api.events.v1.EventSeries#lastObservedTime */ readonly lastObservedTime: Date; + } /** * Converts an object of type 'EventSeries' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_EventSeries( - obj: EventSeries | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_EventSeries(obj: EventSeries | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - count: obj.count, - lastObservedTime: obj.lastObservedTime?.toISOString(), + 'count': obj.count, + 'lastObservedTime': obj.lastObservedTime?.toISOString(), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -16297,26 +15598,20 @@ export interface LimitRangeSpec { * @schema io.k8s.api.core.v1.LimitRangeSpec#limits */ readonly limits: LimitRangeItem[]; + } /** * Converts an object of type 'LimitRangeSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_LimitRangeSpec( - obj: LimitRangeSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_LimitRangeSpec(obj: LimitRangeSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - limits: obj.limits?.map((y) => toJson_LimitRangeItem(y)), + 'limits': obj.limits?.map(y => toJson_LimitRangeItem(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -16332,26 +15627,20 @@ export interface NamespaceSpec { * @schema io.k8s.api.core.v1.NamespaceSpec#finalizers */ readonly finalizers?: string[]; + } /** * Converts an object of type 'NamespaceSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NamespaceSpec( - obj: NamespaceSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NamespaceSpec(obj: NamespaceSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - finalizers: obj.finalizers?.map((y) => y), + 'finalizers': obj.finalizers?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -16409,32 +15698,26 @@ export interface NodeSpec { * @schema io.k8s.api.core.v1.NodeSpec#unschedulable */ readonly unschedulable?: boolean; + } /** * Converts an object of type 'NodeSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NodeSpec( - obj: NodeSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NodeSpec(obj: NodeSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - configSource: toJson_NodeConfigSource(obj.configSource), - externalID: obj.externalId, - podCIDR: obj.podCidr, - podCIDRs: obj.podCidRs?.map((y) => y), - providerID: obj.providerId, - taints: obj.taints?.map((y) => toJson_Taint(y)), - unschedulable: obj.unschedulable, + 'configSource': toJson_NodeConfigSource(obj.configSource), + 'externalID': obj.externalId, + 'podCIDR': obj.podCidr, + 'podCIDRs': obj.podCidRs?.map(y => y), + 'providerID': obj.providerId, + 'taints': obj.taints?.map(y => toJson_Taint(y)), + 'unschedulable': obj.unschedulable, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -16640,6 +15923,13 @@ export interface PersistentVolumeSpec { */ readonly storageos?: StorageOsPersistentVolumeSource; + /** + * Name of VolumeAttributesClass to which this persistent volume belongs. Empty value is not allowed. When this field is not set, it indicates that this volume does not belong to any VolumeAttributesClass. This field is mutable and can be changed by the CSI driver after a volume has been updated successfully to a new class. For an unbound PersistentVolume, the volumeAttributesClassName will be matched with unbound PersistentVolumeClaims during the binding process. This is an alpha field and requires enabling VolumeAttributesClass feature. + * + * @schema io.k8s.api.core.v1.PersistentVolumeSpec#volumeAttributesClassName + */ + readonly volumeAttributesClassName?: string; + /** * volumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec. * @@ -16653,67 +15943,50 @@ export interface PersistentVolumeSpec { * @schema io.k8s.api.core.v1.PersistentVolumeSpec#vsphereVolume */ readonly vsphereVolume?: VsphereVirtualDiskVolumeSource; + } /** * Converts an object of type 'PersistentVolumeSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PersistentVolumeSpec( - obj: PersistentVolumeSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } - const result = { - accessModes: obj.accessModes?.map((y) => y), - awsElasticBlockStore: toJson_AwsElasticBlockStoreVolumeSource( - obj.awsElasticBlockStore, - ), - azureDisk: toJson_AzureDiskVolumeSource(obj.azureDisk), - azureFile: toJson_AzureFilePersistentVolumeSource(obj.azureFile), - capacity: - obj.capacity === undefined - ? undefined - : Object.entries(obj.capacity).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1]?.value }), - {}, - ), - cephfs: toJson_CephFsPersistentVolumeSource(obj.cephfs), - cinder: toJson_CinderPersistentVolumeSource(obj.cinder), - claimRef: toJson_ObjectReference(obj.claimRef), - csi: toJson_CsiPersistentVolumeSource(obj.csi), - fc: toJson_FcVolumeSource(obj.fc), - flexVolume: toJson_FlexPersistentVolumeSource(obj.flexVolume), - flocker: toJson_FlockerVolumeSource(obj.flocker), - gcePersistentDisk: toJson_GcePersistentDiskVolumeSource( - obj.gcePersistentDisk, - ), - glusterfs: toJson_GlusterfsPersistentVolumeSource(obj.glusterfs), - hostPath: toJson_HostPathVolumeSource(obj.hostPath), - iscsi: toJson_IscsiPersistentVolumeSource(obj.iscsi), - local: toJson_LocalVolumeSource(obj.local), - mountOptions: obj.mountOptions?.map((y) => y), - nfs: toJson_NfsVolumeSource(obj.nfs), - nodeAffinity: toJson_VolumeNodeAffinity(obj.nodeAffinity), - persistentVolumeReclaimPolicy: obj.persistentVolumeReclaimPolicy, - photonPersistentDisk: toJson_PhotonPersistentDiskVolumeSource( - obj.photonPersistentDisk, - ), - portworxVolume: toJson_PortworxVolumeSource(obj.portworxVolume), - quobyte: toJson_QuobyteVolumeSource(obj.quobyte), - rbd: toJson_RbdPersistentVolumeSource(obj.rbd), - scaleIO: toJson_ScaleIoPersistentVolumeSource(obj.scaleIo), - storageClassName: obj.storageClassName, - storageos: toJson_StorageOsPersistentVolumeSource(obj.storageos), - volumeMode: obj.volumeMode, - vsphereVolume: toJson_VsphereVirtualDiskVolumeSource(obj.vsphereVolume), - }; - // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); +export function toJson_PersistentVolumeSpec(obj: PersistentVolumeSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'accessModes': obj.accessModes?.map(y => y), + 'awsElasticBlockStore': toJson_AwsElasticBlockStoreVolumeSource(obj.awsElasticBlockStore), + 'azureDisk': toJson_AzureDiskVolumeSource(obj.azureDisk), + 'azureFile': toJson_AzureFilePersistentVolumeSource(obj.azureFile), + 'capacity': ((obj.capacity) === undefined) ? undefined : (Object.entries(obj.capacity).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1]?.value }), {})), + 'cephfs': toJson_CephFsPersistentVolumeSource(obj.cephfs), + 'cinder': toJson_CinderPersistentVolumeSource(obj.cinder), + 'claimRef': toJson_ObjectReference(obj.claimRef), + 'csi': toJson_CsiPersistentVolumeSource(obj.csi), + 'fc': toJson_FcVolumeSource(obj.fc), + 'flexVolume': toJson_FlexPersistentVolumeSource(obj.flexVolume), + 'flocker': toJson_FlockerVolumeSource(obj.flocker), + 'gcePersistentDisk': toJson_GcePersistentDiskVolumeSource(obj.gcePersistentDisk), + 'glusterfs': toJson_GlusterfsPersistentVolumeSource(obj.glusterfs), + 'hostPath': toJson_HostPathVolumeSource(obj.hostPath), + 'iscsi': toJson_IscsiPersistentVolumeSource(obj.iscsi), + 'local': toJson_LocalVolumeSource(obj.local), + 'mountOptions': obj.mountOptions?.map(y => y), + 'nfs': toJson_NfsVolumeSource(obj.nfs), + 'nodeAffinity': toJson_VolumeNodeAffinity(obj.nodeAffinity), + 'persistentVolumeReclaimPolicy': obj.persistentVolumeReclaimPolicy, + 'photonPersistentDisk': toJson_PhotonPersistentDiskVolumeSource(obj.photonPersistentDisk), + 'portworxVolume': toJson_PortworxVolumeSource(obj.portworxVolume), + 'quobyte': toJson_QuobyteVolumeSource(obj.quobyte), + 'rbd': toJson_RbdPersistentVolumeSource(obj.rbd), + 'scaleIO': toJson_ScaleIoPersistentVolumeSource(obj.scaleIo), + 'storageClassName': obj.storageClassName, + 'storageos': toJson_StorageOsPersistentVolumeSource(obj.storageos), + 'volumeAttributesClassName': obj.volumeAttributesClassName, + 'volumeMode': obj.volumeMode, + 'vsphereVolume': toJson_VsphereVirtualDiskVolumeSource(obj.vsphereVolume), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -16756,7 +16029,7 @@ export interface PersistentVolumeClaimSpec { * * @schema io.k8s.api.core.v1.PersistentVolumeClaimSpec#resources */ - readonly resources?: ResourceRequirements; + readonly resources?: VolumeResourceRequirements; /** * selector is a label query over volumes to consider for binding. @@ -16772,6 +16045,13 @@ export interface PersistentVolumeClaimSpec { */ readonly storageClassName?: string; + /** + * volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. If specified, the CSI driver will create or update the volume with the attributes defined in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass will be applied to the claim but it's not allowed to reset this field to empty string once it is set. If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass will be set by the persistentvolume controller if it exists. If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource exists. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled. + * + * @schema io.k8s.api.core.v1.PersistentVolumeClaimSpec#volumeAttributesClassName + */ + readonly volumeAttributesClassName?: string; + /** * volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. * @@ -16785,33 +16065,28 @@ export interface PersistentVolumeClaimSpec { * @schema io.k8s.api.core.v1.PersistentVolumeClaimSpec#volumeName */ readonly volumeName?: string; + } /** * Converts an object of type 'PersistentVolumeClaimSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PersistentVolumeClaimSpec( - obj: PersistentVolumeClaimSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PersistentVolumeClaimSpec(obj: PersistentVolumeClaimSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - accessModes: obj.accessModes?.map((y) => y), - dataSource: toJson_TypedLocalObjectReference(obj.dataSource), - dataSourceRef: toJson_TypedObjectReference(obj.dataSourceRef), - resources: toJson_ResourceRequirements(obj.resources), - selector: toJson_LabelSelector(obj.selector), - storageClassName: obj.storageClassName, - volumeMode: obj.volumeMode, - volumeName: obj.volumeName, + 'accessModes': obj.accessModes?.map(y => y), + 'dataSource': toJson_TypedLocalObjectReference(obj.dataSource), + 'dataSourceRef': toJson_TypedObjectReference(obj.dataSourceRef), + 'resources': toJson_VolumeResourceRequirements(obj.resources), + 'selector': toJson_LabelSelector(obj.selector), + 'storageClassName': obj.storageClassName, + 'volumeAttributesClassName': obj.volumeAttributesClassName, + 'volumeMode': obj.volumeMode, + 'volumeName': obj.volumeName, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -17117,84 +16392,58 @@ export interface PodSpec { * @schema io.k8s.api.core.v1.PodSpec#volumes */ readonly volumes?: Volume[]; + } /** * Converts an object of type 'PodSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodSpec( - obj: PodSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } - const result = { - activeDeadlineSeconds: obj.activeDeadlineSeconds, - affinity: toJson_Affinity(obj.affinity), - automountServiceAccountToken: obj.automountServiceAccountToken, - containers: obj.containers?.map((y) => toJson_Container(y)), - dnsConfig: toJson_PodDnsConfig(obj.dnsConfig), - dnsPolicy: obj.dnsPolicy, - enableServiceLinks: obj.enableServiceLinks, - ephemeralContainers: obj.ephemeralContainers?.map((y) => - toJson_EphemeralContainer(y), - ), - hostAliases: obj.hostAliases?.map((y) => toJson_HostAlias(y)), - hostIPC: obj.hostIpc, - hostNetwork: obj.hostNetwork, - hostPID: obj.hostPid, - hostUsers: obj.hostUsers, - hostname: obj.hostname, - imagePullSecrets: obj.imagePullSecrets?.map((y) => - toJson_LocalObjectReference(y), - ), - initContainers: obj.initContainers?.map((y) => toJson_Container(y)), - nodeName: obj.nodeName, - nodeSelector: - obj.nodeSelector === undefined - ? undefined - : Object.entries(obj.nodeSelector).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - os: toJson_PodOs(obj.os), - overhead: - obj.overhead === undefined - ? undefined - : Object.entries(obj.overhead).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1]?.value }), - {}, - ), - preemptionPolicy: obj.preemptionPolicy, - priority: obj.priority, - priorityClassName: obj.priorityClassName, - readinessGates: obj.readinessGates?.map((y) => toJson_PodReadinessGate(y)), - resourceClaims: obj.resourceClaims?.map((y) => toJson_PodResourceClaim(y)), - restartPolicy: obj.restartPolicy, - runtimeClassName: obj.runtimeClassName, - schedulerName: obj.schedulerName, - schedulingGates: obj.schedulingGates?.map((y) => - toJson_PodSchedulingGate(y), - ), - securityContext: toJson_PodSecurityContext(obj.securityContext), - serviceAccount: obj.serviceAccount, - serviceAccountName: obj.serviceAccountName, - setHostnameAsFQDN: obj.setHostnameAsFqdn, - shareProcessNamespace: obj.shareProcessNamespace, - subdomain: obj.subdomain, - terminationGracePeriodSeconds: obj.terminationGracePeriodSeconds, - tolerations: obj.tolerations?.map((y) => toJson_Toleration(y)), - topologySpreadConstraints: obj.topologySpreadConstraints?.map((y) => - toJson_TopologySpreadConstraint(y), - ), - volumes: obj.volumes?.map((y) => toJson_Volume(y)), - }; - // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); +export function toJson_PodSpec(obj: PodSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'activeDeadlineSeconds': obj.activeDeadlineSeconds, + 'affinity': toJson_Affinity(obj.affinity), + 'automountServiceAccountToken': obj.automountServiceAccountToken, + 'containers': obj.containers?.map(y => toJson_Container(y)), + 'dnsConfig': toJson_PodDnsConfig(obj.dnsConfig), + 'dnsPolicy': obj.dnsPolicy, + 'enableServiceLinks': obj.enableServiceLinks, + 'ephemeralContainers': obj.ephemeralContainers?.map(y => toJson_EphemeralContainer(y)), + 'hostAliases': obj.hostAliases?.map(y => toJson_HostAlias(y)), + 'hostIPC': obj.hostIpc, + 'hostNetwork': obj.hostNetwork, + 'hostPID': obj.hostPid, + 'hostUsers': obj.hostUsers, + 'hostname': obj.hostname, + 'imagePullSecrets': obj.imagePullSecrets?.map(y => toJson_LocalObjectReference(y)), + 'initContainers': obj.initContainers?.map(y => toJson_Container(y)), + 'nodeName': obj.nodeName, + 'nodeSelector': ((obj.nodeSelector) === undefined) ? undefined : (Object.entries(obj.nodeSelector).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'os': toJson_PodOs(obj.os), + 'overhead': ((obj.overhead) === undefined) ? undefined : (Object.entries(obj.overhead).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1]?.value }), {})), + 'preemptionPolicy': obj.preemptionPolicy, + 'priority': obj.priority, + 'priorityClassName': obj.priorityClassName, + 'readinessGates': obj.readinessGates?.map(y => toJson_PodReadinessGate(y)), + 'resourceClaims': obj.resourceClaims?.map(y => toJson_PodResourceClaim(y)), + 'restartPolicy': obj.restartPolicy, + 'runtimeClassName': obj.runtimeClassName, + 'schedulerName': obj.schedulerName, + 'schedulingGates': obj.schedulingGates?.map(y => toJson_PodSchedulingGate(y)), + 'securityContext': toJson_PodSecurityContext(obj.securityContext), + 'serviceAccount': obj.serviceAccount, + 'serviceAccountName': obj.serviceAccountName, + 'setHostnameAsFQDN': obj.setHostnameAsFqdn, + 'shareProcessNamespace': obj.shareProcessNamespace, + 'subdomain': obj.subdomain, + 'terminationGracePeriodSeconds': obj.terminationGracePeriodSeconds, + 'tolerations': obj.tolerations?.map(y => toJson_Toleration(y)), + 'topologySpreadConstraints': obj.topologySpreadConstraints?.map(y => toJson_TopologySpreadConstraint(y)), + 'volumes': obj.volumes?.map(y => toJson_Volume(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -17217,27 +16466,21 @@ export interface PodTemplateSpec { * @schema io.k8s.api.core.v1.PodTemplateSpec#spec */ readonly spec?: PodSpec; + } /** * Converts an object of type 'PodTemplateSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodTemplateSpec( - obj: PodTemplateSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodTemplateSpec(obj: PodTemplateSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_PodSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_PodSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -17276,35 +16519,23 @@ export interface ReplicationControllerSpec { * @schema io.k8s.api.core.v1.ReplicationControllerSpec#template */ readonly template?: PodTemplateSpec; + } /** * Converts an object of type 'ReplicationControllerSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ReplicationControllerSpec( - obj: ReplicationControllerSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ReplicationControllerSpec(obj: ReplicationControllerSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - minReadySeconds: obj.minReadySeconds, - replicas: obj.replicas, - selector: - obj.selector === undefined - ? undefined - : Object.entries(obj.selector).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - template: toJson_PodTemplateSpec(obj.template), + 'minReadySeconds': obj.minReadySeconds, + 'replicas': obj.replicas, + 'selector': ((obj.selector) === undefined) ? undefined : (Object.entries(obj.selector).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'template': toJson_PodTemplateSpec(obj.template), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -17334,34 +16565,22 @@ export interface ResourceQuotaSpec { * @schema io.k8s.api.core.v1.ResourceQuotaSpec#scopes */ readonly scopes?: string[]; + } /** * Converts an object of type 'ResourceQuotaSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ResourceQuotaSpec( - obj: ResourceQuotaSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ResourceQuotaSpec(obj: ResourceQuotaSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - hard: - obj.hard === undefined - ? undefined - : Object.entries(obj.hard).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1]?.value }), - {}, - ), - scopeSelector: toJson_ScopeSelector(obj.scopeSelector), - scopes: obj.scopes?.map((y) => y), + 'hard': ((obj.hard) === undefined) ? undefined : (Object.entries(obj.hard).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1]?.value }), {})), + 'scopeSelector': toJson_ScopeSelector(obj.scopeSelector), + 'scopes': obj.scopes?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -17454,7 +16673,7 @@ export interface ServiceSpec { readonly loadBalancerClass?: string; /** - * Only applies to Service Type: LoadBalancer. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature. Deprecated: This field was under-specified and its meaning varies across implementations, and it cannot support dual-stack. As of Kubernetes v1.24, users are encouraged to use implementation-specific annotations when available. This field may be removed in a future API version. + * Only applies to Service Type: LoadBalancer. This feature depends on whether the underlying cloud-provider supports specifying the loadBalancerIP when a load balancer is created. This field will be ignored if the cloud-provider does not support the feature. Deprecated: This field was under-specified and its meaning varies across implementations. Using it is non-portable and it may not support dual-stack. Users are encouraged to use implementation-specific annotations when available. * * @schema io.k8s.api.core.v1.ServiceSpec#loadBalancerIP */ @@ -17510,52 +16729,38 @@ export interface ServiceSpec { * @schema io.k8s.api.core.v1.ServiceSpec#type */ readonly type?: string; + } /** * Converts an object of type 'ServiceSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ServiceSpec( - obj: ServiceSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } - const result = { - allocateLoadBalancerNodePorts: obj.allocateLoadBalancerNodePorts, - clusterIP: obj.clusterIp, - clusterIPs: obj.clusterIPs?.map((y) => y), - externalIPs: obj.externalIPs?.map((y) => y), - externalName: obj.externalName, - externalTrafficPolicy: obj.externalTrafficPolicy, - healthCheckNodePort: obj.healthCheckNodePort, - internalTrafficPolicy: obj.internalTrafficPolicy, - ipFamilies: obj.ipFamilies?.map((y) => y), - ipFamilyPolicy: obj.ipFamilyPolicy, - loadBalancerClass: obj.loadBalancerClass, - loadBalancerIP: obj.loadBalancerIp, - loadBalancerSourceRanges: obj.loadBalancerSourceRanges?.map((y) => y), - ports: obj.ports?.map((y) => toJson_ServicePort(y)), - publishNotReadyAddresses: obj.publishNotReadyAddresses, - selector: - obj.selector === undefined - ? undefined - : Object.entries(obj.selector).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - sessionAffinity: obj.sessionAffinity, - sessionAffinityConfig: toJson_SessionAffinityConfig( - obj.sessionAffinityConfig, - ), - type: obj.type, - }; - // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); +export function toJson_ServiceSpec(obj: ServiceSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'allocateLoadBalancerNodePorts': obj.allocateLoadBalancerNodePorts, + 'clusterIP': obj.clusterIp, + 'clusterIPs': obj.clusterIPs?.map(y => y), + 'externalIPs': obj.externalIPs?.map(y => y), + 'externalName': obj.externalName, + 'externalTrafficPolicy': obj.externalTrafficPolicy, + 'healthCheckNodePort': obj.healthCheckNodePort, + 'internalTrafficPolicy': obj.internalTrafficPolicy, + 'ipFamilies': obj.ipFamilies?.map(y => y), + 'ipFamilyPolicy': obj.ipFamilyPolicy, + 'loadBalancerClass': obj.loadBalancerClass, + 'loadBalancerIP': obj.loadBalancerIp, + 'loadBalancerSourceRanges': obj.loadBalancerSourceRanges?.map(y => y), + 'ports': obj.ports?.map(y => toJson_ServicePort(y)), + 'publishNotReadyAddresses': obj.publishNotReadyAddresses, + 'selector': ((obj.selector) === undefined) ? undefined : (Object.entries(obj.selector).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'sessionAffinity': obj.sessionAffinity, + 'sessionAffinityConfig': toJson_SessionAffinityConfig(obj.sessionAffinityConfig), + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -17571,26 +16776,20 @@ export interface LocalObjectReference { * @schema io.k8s.api.core.v1.LocalObjectReference#name */ readonly name?: string; + } /** * Converts an object of type 'LocalObjectReference' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_LocalObjectReference( - obj: LocalObjectReference | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_LocalObjectReference(obj: LocalObjectReference | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -17655,39 +16854,27 @@ export interface Endpoint { * @schema io.k8s.api.discovery.v1.Endpoint#zone */ readonly zone?: string; + } /** * Converts an object of type 'Endpoint' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_Endpoint( - obj: Endpoint | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_Endpoint(obj: Endpoint | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - addresses: obj.addresses?.map((y) => y), - conditions: toJson_EndpointConditions(obj.conditions), - deprecatedTopology: - obj.deprecatedTopology === undefined - ? undefined - : Object.entries(obj.deprecatedTopology).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - hints: toJson_EndpointHints(obj.hints), - hostname: obj.hostname, - nodeName: obj.nodeName, - targetRef: toJson_ObjectReference(obj.targetRef), - zone: obj.zone, + 'addresses': obj.addresses?.map(y => y), + 'conditions': toJson_EndpointConditions(obj.conditions), + 'deprecatedTopology': ((obj.deprecatedTopology) === undefined) ? undefined : (Object.entries(obj.deprecatedTopology).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'hints': toJson_EndpointHints(obj.hints), + 'hostname': obj.hostname, + 'nodeName': obj.nodeName, + 'targetRef': toJson_ObjectReference(obj.targetRef), + 'zone': obj.zone, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -17703,7 +16890,9 @@ export interface EndpointPort { * * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). * * * Kubernetes-defined prefixed names: - * * 'kubernetes.io/h2c' - HTTP/2 over cleartext as described in https://www.rfc-editor.org/rfc/rfc7540 + * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- + * * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 + * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 * * * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol. * @@ -17732,136 +16921,121 @@ export interface EndpointPort { * @schema io.k8s.api.core.v1.EndpointPort#protocol */ readonly protocol?: string; + } /** * Converts an object of type 'EndpointPort' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_EndpointPort( - obj: EndpointPort | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_EndpointPort(obj: EndpointPort | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - appProtocol: obj.appProtocol, - name: obj.name, - port: obj.port, - protocol: obj.protocol, + 'appProtocol': obj.appProtocol, + 'name': obj.name, + 'port': obj.port, + 'protocol': obj.protocol, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * FlowSchemaSpec describes how the FlowSchema's specification looks like. * - * @schema io.k8s.api.flowcontrol.v1beta2.FlowSchemaSpec + * @schema io.k8s.api.flowcontrol.v1.FlowSchemaSpec */ -export interface FlowSchemaSpecV1Beta2 { +export interface FlowSchemaSpec { /** * `distinguisherMethod` defines how to compute the flow distinguisher for requests that match this schema. `nil` specifies that the distinguisher is disabled and thus will always be the empty string. * - * @schema io.k8s.api.flowcontrol.v1beta2.FlowSchemaSpec#distinguisherMethod + * @schema io.k8s.api.flowcontrol.v1.FlowSchemaSpec#distinguisherMethod */ - readonly distinguisherMethod?: FlowDistinguisherMethodV1Beta2; + readonly distinguisherMethod?: FlowDistinguisherMethod; /** * `matchingPrecedence` is used to choose among the FlowSchemas that match a given request. The chosen FlowSchema is among those with the numerically lowest (which we take to be logically highest) MatchingPrecedence. Each MatchingPrecedence value must be ranged in [1,10000]. Note that if the precedence is not specified, it will be set to 1000 as default. * - * @schema io.k8s.api.flowcontrol.v1beta2.FlowSchemaSpec#matchingPrecedence + * @schema io.k8s.api.flowcontrol.v1.FlowSchemaSpec#matchingPrecedence */ readonly matchingPrecedence?: number; /** * `priorityLevelConfiguration` should reference a PriorityLevelConfiguration in the cluster. If the reference cannot be resolved, the FlowSchema will be ignored and marked as invalid in its status. Required. * - * @schema io.k8s.api.flowcontrol.v1beta2.FlowSchemaSpec#priorityLevelConfiguration + * @schema io.k8s.api.flowcontrol.v1.FlowSchemaSpec#priorityLevelConfiguration */ - readonly priorityLevelConfiguration: PriorityLevelConfigurationReferenceV1Beta2; + readonly priorityLevelConfiguration: PriorityLevelConfigurationReference; /** * `rules` describes which requests will match this flow schema. This FlowSchema matches a request if and only if at least one member of rules matches the request. if it is an empty slice, there will be no requests matching the FlowSchema. * - * @schema io.k8s.api.flowcontrol.v1beta2.FlowSchemaSpec#rules + * @schema io.k8s.api.flowcontrol.v1.FlowSchemaSpec#rules */ - readonly rules?: PolicyRulesWithSubjectsV1Beta2[]; + readonly rules?: PolicyRulesWithSubjects[]; + } /** - * Converts an object of type 'FlowSchemaSpecV1Beta2' to JSON representation. + * Converts an object of type 'FlowSchemaSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_FlowSchemaSpecV1Beta2( - obj: FlowSchemaSpecV1Beta2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_FlowSchemaSpec(obj: FlowSchemaSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - distinguisherMethod: toJson_FlowDistinguisherMethodV1Beta2( - obj.distinguisherMethod, - ), - matchingPrecedence: obj.matchingPrecedence, - priorityLevelConfiguration: - toJson_PriorityLevelConfigurationReferenceV1Beta2( - obj.priorityLevelConfiguration, - ), - rules: obj.rules?.map((y) => toJson_PolicyRulesWithSubjectsV1Beta2(y)), + 'distinguisherMethod': toJson_FlowDistinguisherMethod(obj.distinguisherMethod), + 'matchingPrecedence': obj.matchingPrecedence, + 'priorityLevelConfiguration': toJson_PriorityLevelConfigurationReference(obj.priorityLevelConfiguration), + 'rules': obj.rules?.map(y => toJson_PolicyRulesWithSubjects(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * PriorityLevelConfigurationSpec specifies the configuration of a priority level. * - * @schema io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationSpec + * @schema io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationSpec */ -export interface PriorityLevelConfigurationSpecV1Beta2 { +export interface PriorityLevelConfigurationSpec { + /** + * `exempt` specifies how requests are handled for an exempt priority level. This field MUST be empty if `type` is `"Limited"`. This field MAY be non-empty if `type` is `"Exempt"`. If empty and `type` is `"Exempt"` then the default values for `ExemptPriorityLevelConfiguration` apply. + * + * @schema io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationSpec#exempt + */ + readonly exempt?: ExemptPriorityLevelConfiguration; + /** * `limited` specifies how requests are handled for a Limited priority level. This field must be non-empty if and only if `type` is `"Limited"`. * - * @schema io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationSpec#limited + * @schema io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationSpec#limited */ - readonly limited?: LimitedPriorityLevelConfigurationV1Beta2; + readonly limited?: LimitedPriorityLevelConfiguration; /** * `type` indicates whether this priority level is subject to limitation on request execution. A value of `"Exempt"` means that requests of this priority level are not subject to a limit (and thus are never queued) and do not detract from the capacity made available to other priority levels. A value of `"Limited"` means that (a) requests of this priority level _are_ subject to limits and (b) some of the server's limited capacity is made available exclusively to this priority level. Required. * - * @schema io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationSpec#type + * @schema io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationSpec#type */ readonly type: string; + } /** - * Converts an object of type 'PriorityLevelConfigurationSpecV1Beta2' to JSON representation. + * Converts an object of type 'PriorityLevelConfigurationSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PriorityLevelConfigurationSpecV1Beta2( - obj: PriorityLevelConfigurationSpecV1Beta2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PriorityLevelConfigurationSpec(obj: PriorityLevelConfigurationSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - limited: toJson_LimitedPriorityLevelConfigurationV1Beta2(obj.limited), - type: obj.type, + 'exempt': toJson_ExemptPriorityLevelConfiguration(obj.exempt), + 'limited': toJson_LimitedPriorityLevelConfiguration(obj.limited), + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -17898,34 +17072,23 @@ export interface FlowSchemaSpecV1Beta3 { * @schema io.k8s.api.flowcontrol.v1beta3.FlowSchemaSpec#rules */ readonly rules?: PolicyRulesWithSubjectsV1Beta3[]; + } /** * Converts an object of type 'FlowSchemaSpecV1Beta3' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_FlowSchemaSpecV1Beta3( - obj: FlowSchemaSpecV1Beta3 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_FlowSchemaSpecV1Beta3(obj: FlowSchemaSpecV1Beta3 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - distinguisherMethod: toJson_FlowDistinguisherMethodV1Beta3( - obj.distinguisherMethod, - ), - matchingPrecedence: obj.matchingPrecedence, - priorityLevelConfiguration: - toJson_PriorityLevelConfigurationReferenceV1Beta3( - obj.priorityLevelConfiguration, - ), - rules: obj.rules?.map((y) => toJson_PolicyRulesWithSubjectsV1Beta3(y)), + 'distinguisherMethod': toJson_FlowDistinguisherMethodV1Beta3(obj.distinguisherMethod), + 'matchingPrecedence': obj.matchingPrecedence, + 'priorityLevelConfiguration': toJson_PriorityLevelConfigurationReferenceV1Beta3(obj.priorityLevelConfiguration), + 'rules': obj.rules?.map(y => toJson_PolicyRulesWithSubjectsV1Beta3(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -17935,6 +17098,13 @@ export function toJson_FlowSchemaSpecV1Beta3( * @schema io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationSpec */ export interface PriorityLevelConfigurationSpecV1Beta3 { + /** + * `exempt` specifies how requests are handled for an exempt priority level. This field MUST be empty if `type` is `"Limited"`. This field MAY be non-empty if `type` is `"Exempt"`. If empty and `type` is `"Exempt"` then the default values for `ExemptPriorityLevelConfiguration` apply. + * + * @schema io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationSpec#exempt + */ + readonly exempt?: ExemptPriorityLevelConfigurationV1Beta3; + /** * `limited` specifies how requests are handled for a Limited priority level. This field must be non-empty if and only if `type` is `"Limited"`. * @@ -17948,27 +17118,22 @@ export interface PriorityLevelConfigurationSpecV1Beta3 { * @schema io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationSpec#type */ readonly type: string; + } /** * Converts an object of type 'PriorityLevelConfigurationSpecV1Beta3' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PriorityLevelConfigurationSpecV1Beta3( - obj: PriorityLevelConfigurationSpecV1Beta3 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PriorityLevelConfigurationSpecV1Beta3(obj: PriorityLevelConfigurationSpecV1Beta3 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - limited: toJson_LimitedPriorityLevelConfigurationV1Beta3(obj.limited), - type: obj.type, + 'exempt': toJson_ExemptPriorityLevelConfigurationV1Beta3(obj.exempt), + 'limited': toJson_LimitedPriorityLevelConfigurationV1Beta3(obj.limited), + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18005,29 +17170,23 @@ export interface IngressSpec { * @schema io.k8s.api.networking.v1.IngressSpec#tls */ readonly tls?: IngressTls[]; + } /** * Converts an object of type 'IngressSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_IngressSpec( - obj: IngressSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_IngressSpec(obj: IngressSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - defaultBackend: toJson_IngressBackend(obj.defaultBackend), - ingressClassName: obj.ingressClassName, - rules: obj.rules?.map((y) => toJson_IngressRule(y)), - tls: obj.tls?.map((y) => toJson_IngressTls(y)), + 'defaultBackend': toJson_IngressBackend(obj.defaultBackend), + 'ingressClassName': obj.ingressClassName, + 'rules': obj.rules?.map(y => toJson_IngressRule(y)), + 'tls': obj.tls?.map(y => toJson_IngressTls(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18050,27 +17209,21 @@ export interface IngressClassSpec { * @schema io.k8s.api.networking.v1.IngressClassSpec#parameters */ readonly parameters?: IngressClassParametersReference; + } /** * Converts an object of type 'IngressClassSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_IngressClassSpec( - obj: IngressClassSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_IngressClassSpec(obj: IngressClassSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - controller: obj.controller, - parameters: toJson_IngressClassParametersReference(obj.parameters), + 'controller': obj.controller, + 'parameters': toJson_IngressClassParametersReference(obj.parameters), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18107,123 +17260,81 @@ export interface NetworkPolicySpec { * @schema io.k8s.api.networking.v1.NetworkPolicySpec#policyTypes */ readonly policyTypes?: string[]; + } /** * Converts an object of type 'NetworkPolicySpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NetworkPolicySpec( - obj: NetworkPolicySpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NetworkPolicySpec(obj: NetworkPolicySpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - egress: obj.egress?.map((y) => toJson_NetworkPolicyEgressRule(y)), - ingress: obj.ingress?.map((y) => toJson_NetworkPolicyIngressRule(y)), - podSelector: toJson_LabelSelector(obj.podSelector), - policyTypes: obj.policyTypes?.map((y) => y), + 'egress': obj.egress?.map(y => toJson_NetworkPolicyEgressRule(y)), + 'ingress': obj.ingress?.map(y => toJson_NetworkPolicyIngressRule(y)), + 'podSelector': toJson_LabelSelector(obj.podSelector), + 'policyTypes': obj.policyTypes?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** - * ClusterCIDRSpec defines the desired state of ClusterCIDR. + * IPAddressSpec describe the attributes in an IP Address. * - * @schema io.k8s.api.networking.v1alpha1.ClusterCIDRSpec + * @schema io.k8s.api.networking.v1alpha1.IPAddressSpec */ -export interface ClusterCidrSpecV1Alpha1 { - /** - * ipv4 defines an IPv4 IP block in CIDR notation(e.g. "10.0.0.0/8"). At least one of ipv4 and ipv6 must be specified. This field is immutable. - * - * @schema io.k8s.api.networking.v1alpha1.ClusterCIDRSpec#ipv4 - */ - readonly ipv4?: string; - - /** - * ipv6 defines an IPv6 IP block in CIDR notation(e.g. "2001:db8::/64"). At least one of ipv4 and ipv6 must be specified. This field is immutable. - * - * @schema io.k8s.api.networking.v1alpha1.ClusterCIDRSpec#ipv6 - */ - readonly ipv6?: string; - +export interface IpAddressSpecV1Alpha1 { /** - * nodeSelector defines which nodes the config is applicable to. An empty or nil nodeSelector selects all nodes. This field is immutable. + * ParentRef references the resource that an IPAddress is attached to. An IPAddress must reference a parent object. * - * @schema io.k8s.api.networking.v1alpha1.ClusterCIDRSpec#nodeSelector + * @schema io.k8s.api.networking.v1alpha1.IPAddressSpec#parentRef */ - readonly nodeSelector?: NodeSelector; + readonly parentRef?: ParentReferenceV1Alpha1; - /** - * perNodeHostBits defines the number of host bits to be configured per node. A subnet mask determines how much of the address is used for network bits and host bits. For example an IPv4 address of 192.168.0.0/24, splits the address into 24 bits for the network portion and 8 bits for the host portion. To allocate 256 IPs, set this field to 8 (a /24 mask for IPv4 or a /120 for IPv6). Minimum value is 4 (16 IPs). This field is immutable. - * - * @schema io.k8s.api.networking.v1alpha1.ClusterCIDRSpec#perNodeHostBits - */ - readonly perNodeHostBits: number; } /** - * Converts an object of type 'ClusterCidrSpecV1Alpha1' to JSON representation. + * Converts an object of type 'IpAddressSpecV1Alpha1' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ClusterCidrSpecV1Alpha1( - obj: ClusterCidrSpecV1Alpha1 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_IpAddressSpecV1Alpha1(obj: IpAddressSpecV1Alpha1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - ipv4: obj.ipv4, - ipv6: obj.ipv6, - nodeSelector: toJson_NodeSelector(obj.nodeSelector), - perNodeHostBits: obj.perNodeHostBits, + 'parentRef': toJson_ParentReferenceV1Alpha1(obj.parentRef), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** - * IPAddressSpec describe the attributes in an IP Address. + * ServiceCIDRSpec define the CIDRs the user wants to use for allocating ClusterIPs for Services. * - * @schema io.k8s.api.networking.v1alpha1.IPAddressSpec + * @schema io.k8s.api.networking.v1alpha1.ServiceCIDRSpec */ -export interface IpAddressSpecV1Alpha1 { +export interface ServiceCidrSpecV1Alpha1 { /** - * ParentRef references the resource that an IPAddress is attached to. An IPAddress must reference a parent object. + * CIDRs defines the IP blocks in CIDR notation (e.g. "192.168.0.0/24" or "2001:db8::/64") from which to assign service cluster IPs. Max of two CIDRs is allowed, one of each IP family. This field is immutable. * - * @schema io.k8s.api.networking.v1alpha1.IPAddressSpec#parentRef + * @schema io.k8s.api.networking.v1alpha1.ServiceCIDRSpec#cidrs */ - readonly parentRef?: ParentReferenceV1Alpha1; + readonly cidrs?: string[]; + } /** - * Converts an object of type 'IpAddressSpecV1Alpha1' to JSON representation. + * Converts an object of type 'ServiceCidrSpecV1Alpha1' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_IpAddressSpecV1Alpha1( - obj: IpAddressSpecV1Alpha1 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ServiceCidrSpecV1Alpha1(obj: ServiceCidrSpecV1Alpha1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - parentRef: toJson_ParentReferenceV1Alpha1(obj.parentRef), + 'cidrs': obj.cidrs?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18239,32 +17350,20 @@ export interface Overhead { * @schema io.k8s.api.node.v1.Overhead#podFixed */ readonly podFixed?: { [key: string]: Quantity }; + } /** * Converts an object of type 'Overhead' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_Overhead( - obj: Overhead | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_Overhead(obj: Overhead | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - podFixed: - obj.podFixed === undefined - ? undefined - : Object.entries(obj.podFixed).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1]?.value }), - {}, - ), + 'podFixed': ((obj.podFixed) === undefined) ? undefined : (Object.entries(obj.podFixed).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1]?.value }), {})), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18287,33 +17386,21 @@ export interface Scheduling { * @schema io.k8s.api.node.v1.Scheduling#tolerations */ readonly tolerations?: Toleration[]; + } /** * Converts an object of type 'Scheduling' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_Scheduling( - obj: Scheduling | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_Scheduling(obj: Scheduling | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - nodeSelector: - obj.nodeSelector === undefined - ? undefined - : Object.entries(obj.nodeSelector).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - tolerations: obj.tolerations?.map((y) => toJson_Toleration(y)), + 'nodeSelector': ((obj.nodeSelector) === undefined) ? undefined : (Object.entries(obj.nodeSelector).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'tolerations': obj.tolerations?.map(y => toJson_Toleration(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18372,32 +17459,26 @@ export interface DeleteOptions { * @schema io.k8s.apimachinery.pkg.apis.meta.v1.DeleteOptions#propagationPolicy */ readonly propagationPolicy?: string; + } /** * Converts an object of type 'DeleteOptions' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_DeleteOptions( - obj: DeleteOptions | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_DeleteOptions(obj: DeleteOptions | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiVersion: obj.apiVersion, - dryRun: obj.dryRun?.map((y) => y), - gracePeriodSeconds: obj.gracePeriodSeconds, - kind: obj.kind, - orphanDependents: obj.orphanDependents, - preconditions: toJson_Preconditions(obj.preconditions), - propagationPolicy: obj.propagationPolicy, + 'apiVersion': obj.apiVersion, + 'dryRun': obj.dryRun?.map(y => y), + 'gracePeriodSeconds': obj.gracePeriodSeconds, + 'kind': obj.kind, + 'orphanDependents': obj.orphanDependents, + 'preconditions': toJson_Preconditions(obj.preconditions), + 'propagationPolicy': obj.propagationPolicy, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18444,29 +17525,23 @@ export interface PodDisruptionBudgetSpec { * @schema io.k8s.api.policy.v1.PodDisruptionBudgetSpec#unhealthyPodEvictionPolicy */ readonly unhealthyPodEvictionPolicy?: string; + } /** * Converts an object of type 'PodDisruptionBudgetSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodDisruptionBudgetSpec( - obj: PodDisruptionBudgetSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodDisruptionBudgetSpec(obj: PodDisruptionBudgetSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - maxUnavailable: obj.maxUnavailable?.value, - minAvailable: obj.minAvailable?.value, - selector: toJson_LabelSelector(obj.selector), - unhealthyPodEvictionPolicy: obj.unhealthyPodEvictionPolicy, + 'maxUnavailable': obj.maxUnavailable?.value, + 'minAvailable': obj.minAvailable?.value, + 'selector': toJson_LabelSelector(obj.selector), + 'unhealthyPodEvictionPolicy': obj.unhealthyPodEvictionPolicy, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18482,28 +17557,20 @@ export interface AggregationRule { * @schema io.k8s.api.rbac.v1.AggregationRule#clusterRoleSelectors */ readonly clusterRoleSelectors?: LabelSelector[]; + } /** * Converts an object of type 'AggregationRule' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_AggregationRule( - obj: AggregationRule | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_AggregationRule(obj: AggregationRule | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - clusterRoleSelectors: obj.clusterRoleSelectors?.map((y) => - toJson_LabelSelector(y), - ), + 'clusterRoleSelectors': obj.clusterRoleSelectors?.map(y => toJson_LabelSelector(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18547,30 +17614,24 @@ export interface PolicyRule { * @schema io.k8s.api.rbac.v1.PolicyRule#verbs */ readonly verbs: string[]; + } /** * Converts an object of type 'PolicyRule' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PolicyRule( - obj: PolicyRule | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PolicyRule(obj: PolicyRule | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiGroups: obj.apiGroups?.map((y) => y), - nonResourceURLs: obj.nonResourceUrLs?.map((y) => y), - resourceNames: obj.resourceNames?.map((y) => y), - resources: obj.resources?.map((y) => y), - verbs: obj.verbs?.map((y) => y), + 'apiGroups': obj.apiGroups?.map(y => y), + 'nonResourceURLs': obj.nonResourceUrLs?.map(y => y), + 'resourceNames': obj.resourceNames?.map(y => y), + 'resources': obj.resources?.map(y => y), + 'verbs': obj.verbs?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18600,28 +17661,22 @@ export interface RoleRef { * @schema io.k8s.api.rbac.v1.RoleRef#name */ readonly name: string; + } /** * Converts an object of type 'RoleRef' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_RoleRef( - obj: RoleRef | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_RoleRef(obj: RoleRef | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiGroup: obj.apiGroup, - kind: obj.kind, - name: obj.name, + 'apiGroup': obj.apiGroup, + 'kind': obj.kind, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18659,29 +17714,23 @@ export interface Subject { * @schema io.k8s.api.rbac.v1.Subject#namespace */ readonly namespace?: string; + } /** * Converts an object of type 'Subject' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_Subject( - obj: Subject | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_Subject(obj: Subject | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiGroup: obj.apiGroup, - kind: obj.kind, - name: obj.name, - namespace: obj.namespace, + 'apiGroup': obj.apiGroup, + 'kind': obj.kind, + 'name': obj.name, + 'namespace': obj.namespace, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18706,27 +17755,21 @@ export interface PodSchedulingContextSpecV1Alpha2 { * @schema io.k8s.api.resource.v1alpha2.PodSchedulingContextSpec#selectedNode */ readonly selectedNode?: string; + } /** * Converts an object of type 'PodSchedulingContextSpecV1Alpha2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodSchedulingContextSpecV1Alpha2( - obj: PodSchedulingContextSpecV1Alpha2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodSchedulingContextSpecV1Alpha2(obj: PodSchedulingContextSpecV1Alpha2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - potentialNodes: obj.potentialNodes?.map((y) => y), - selectedNode: obj.selectedNode, + 'potentialNodes': obj.potentialNodes?.map(y => y), + 'selectedNode': obj.selectedNode, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18758,30 +17801,22 @@ export interface ResourceClaimSpecV1Alpha2 { * @schema io.k8s.api.resource.v1alpha2.ResourceClaimSpec#resourceClassName */ readonly resourceClassName: string; + } /** * Converts an object of type 'ResourceClaimSpecV1Alpha2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ResourceClaimSpecV1Alpha2( - obj: ResourceClaimSpecV1Alpha2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ResourceClaimSpecV1Alpha2(obj: ResourceClaimSpecV1Alpha2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - allocationMode: obj.allocationMode, - parametersRef: toJson_ResourceClaimParametersReferenceV1Alpha2( - obj.parametersRef, - ), - resourceClassName: obj.resourceClassName, + 'allocationMode': obj.allocationMode, + 'parametersRef': toJson_ResourceClaimParametersReferenceV1Alpha2(obj.parametersRef), + 'resourceClassName': obj.resourceClassName, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18804,27 +17839,21 @@ export interface ResourceClaimTemplateSpecV1Alpha2 { * @schema io.k8s.api.resource.v1alpha2.ResourceClaimTemplateSpec#spec */ readonly spec: ResourceClaimSpecV1Alpha2; + } /** * Converts an object of type 'ResourceClaimTemplateSpecV1Alpha2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ResourceClaimTemplateSpecV1Alpha2( - obj: ResourceClaimTemplateSpecV1Alpha2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ResourceClaimTemplateSpecV1Alpha2(obj: ResourceClaimTemplateSpecV1Alpha2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_ResourceClaimSpecV1Alpha2(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_ResourceClaimSpecV1Alpha2(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18861,29 +17890,23 @@ export interface ResourceClassParametersReferenceV1Alpha2 { * @schema io.k8s.api.resource.v1alpha2.ResourceClassParametersReference#namespace */ readonly namespace?: string; + } /** * Converts an object of type 'ResourceClassParametersReferenceV1Alpha2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ResourceClassParametersReferenceV1Alpha2( - obj: ResourceClassParametersReferenceV1Alpha2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ResourceClassParametersReferenceV1Alpha2(obj: ResourceClassParametersReferenceV1Alpha2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiGroup: obj.apiGroup, - kind: obj.kind, - name: obj.name, - namespace: obj.namespace, + 'apiGroup': obj.apiGroup, + 'kind': obj.kind, + 'name': obj.name, + 'namespace': obj.namespace, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18899,28 +17922,20 @@ export interface NodeSelector { * @schema io.k8s.api.core.v1.NodeSelector#nodeSelectorTerms */ readonly nodeSelectorTerms: NodeSelectorTerm[]; + } /** * Converts an object of type 'NodeSelector' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NodeSelector( - obj: NodeSelector | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NodeSelector(obj: NodeSelector | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - nodeSelectorTerms: obj.nodeSelectorTerms?.map((y) => - toJson_NodeSelectorTerm(y), - ), + 'nodeSelectorTerms': obj.nodeSelectorTerms?.map(y => toJson_NodeSelectorTerm(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -18956,7 +17971,7 @@ export interface CsiDriverSpec { * * The CSI driver specifies podInfoOnMount as part of driver deployment. If true, Kubelet will pass pod information as VolumeContext in the CSI NodePublishVolume() calls. The CSI driver is responsible for parsing and validating the information passed in as VolumeContext. * - * The following VolumeConext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. "csi.storage.k8s.io/pod.name": pod.Name "csi.storage.k8s.io/pod.namespace": pod.Namespace "csi.storage.k8s.io/pod.uid": string(pod.UID) "csi.storage.k8s.io/ephemeral": "true" if the volume is an ephemeral inline volume + * The following VolumeContext will be passed if podInfoOnMount is set to true. This list might grow, but the prefix will be used. "csi.storage.k8s.io/pod.name": pod.Name "csi.storage.k8s.io/pod.namespace": pod.Namespace "csi.storage.k8s.io/pod.uid": string(pod.UID) "csi.storage.k8s.io/ephemeral": "true" if the volume is an ephemeral inline volume * defined by a CSIVolumeSource, otherwise "false" * * "csi.storage.k8s.io/ephemeral" is a new feature in Kubernetes 1.16. It is only required for drivers which support both the "Persistent" and "Ephemeral" VolumeLifecycleMode. Other drivers can leave pod info disabled and/or ignore this field. As Kubernetes 1.15 doesn't support this field, drivers can only support one mode when deployed on such a cluster and the deployment determines which mode that is, for example via a command line parameter of the driver. @@ -19031,33 +18046,27 @@ export interface CsiDriverSpec { * @schema io.k8s.api.storage.v1.CSIDriverSpec#volumeLifecycleModes */ readonly volumeLifecycleModes?: string[]; + } /** * Converts an object of type 'CsiDriverSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CsiDriverSpec( - obj: CsiDriverSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CsiDriverSpec(obj: CsiDriverSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - attachRequired: obj.attachRequired, - fsGroupPolicy: obj.fsGroupPolicy, - podInfoOnMount: obj.podInfoOnMount, - requiresRepublish: obj.requiresRepublish, - seLinuxMount: obj.seLinuxMount, - storageCapacity: obj.storageCapacity, - tokenRequests: obj.tokenRequests?.map((y) => toJson_TokenRequest(y)), - volumeLifecycleModes: obj.volumeLifecycleModes?.map((y) => y), + 'attachRequired': obj.attachRequired, + 'fsGroupPolicy': obj.fsGroupPolicy, + 'podInfoOnMount': obj.podInfoOnMount, + 'requiresRepublish': obj.requiresRepublish, + 'seLinuxMount': obj.seLinuxMount, + 'storageCapacity': obj.storageCapacity, + 'tokenRequests': obj.tokenRequests?.map(y => toJson_TokenRequest(y)), + 'volumeLifecycleModes': obj.volumeLifecycleModes?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -19073,26 +18082,20 @@ export interface CsiNodeSpec { * @schema io.k8s.api.storage.v1.CSINodeSpec#drivers */ readonly drivers: CsiNodeDriver[]; + } /** * Converts an object of type 'CsiNodeSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CsiNodeSpec( - obj: CsiNodeSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CsiNodeSpec(obj: CsiNodeSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - drivers: obj.drivers?.map((y) => toJson_CsiNodeDriver(y)), + 'drivers': obj.drivers?.map(y => toJson_CsiNodeDriver(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -19106,7 +18109,8 @@ export class Quantity { public static fromNumber(value: number): Quantity { return new Quantity(value); } - private constructor(public readonly value: string | number) {} + private constructor(public readonly value: string | number) { + } } /** @@ -19128,35 +18132,21 @@ export interface LabelSelector { * @schema io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector#matchLabels */ readonly matchLabels?: { [key: string]: string }; + } /** * Converts an object of type 'LabelSelector' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_LabelSelector( - obj: LabelSelector | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_LabelSelector(obj: LabelSelector | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - matchExpressions: obj.matchExpressions?.map((y) => - toJson_LabelSelectorRequirement(y), - ), - matchLabels: - obj.matchLabels === undefined - ? undefined - : Object.entries(obj.matchLabels).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), + 'matchExpressions': obj.matchExpressions?.map(y => toJson_LabelSelectorRequirement(y)), + 'matchLabels': ((obj.matchLabels) === undefined) ? undefined : (Object.entries(obj.matchLabels).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -19172,28 +18162,20 @@ export interface TopologySelectorTerm { * @schema io.k8s.api.core.v1.TopologySelectorTerm#matchLabelExpressions */ readonly matchLabelExpressions?: TopologySelectorLabelRequirement[]; + } /** * Converts an object of type 'TopologySelectorTerm' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_TopologySelectorTerm( - obj: TopologySelectorTerm | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_TopologySelectorTerm(obj: TopologySelectorTerm | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - matchLabelExpressions: obj.matchLabelExpressions?.map((y) => - toJson_TopologySelectorLabelRequirement(y), - ), + 'matchLabelExpressions': obj.matchLabelExpressions?.map(y => toJson_TopologySelectorLabelRequirement(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -19223,28 +18205,22 @@ export interface VolumeAttachmentSpec { * @schema io.k8s.api.storage.v1.VolumeAttachmentSpec#source */ readonly source: VolumeAttachmentSource; + } /** * Converts an object of type 'VolumeAttachmentSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_VolumeAttachmentSpec( - obj: VolumeAttachmentSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_VolumeAttachmentSpec(obj: VolumeAttachmentSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - attacher: obj.attacher, - nodeName: obj.nodeName, - source: toJson_VolumeAttachmentSource(obj.source), + 'attacher': obj.attacher, + 'nodeName': obj.nodeName, + 'source': toJson_VolumeAttachmentSource(obj.source), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -19295,33 +18271,25 @@ export interface CustomResourceDefinitionSpec { * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionSpec#versions */ readonly versions: CustomResourceDefinitionVersion[]; + } /** * Converts an object of type 'CustomResourceDefinitionSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CustomResourceDefinitionSpec( - obj: CustomResourceDefinitionSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CustomResourceDefinitionSpec(obj: CustomResourceDefinitionSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - conversion: toJson_CustomResourceConversion(obj.conversion), - group: obj.group, - names: toJson_CustomResourceDefinitionNames(obj.names), - preserveUnknownFields: obj.preserveUnknownFields, - scope: obj.scope, - versions: obj.versions?.map((y) => - toJson_CustomResourceDefinitionVersion(y), - ), + 'conversion': toJson_CustomResourceConversion(obj.conversion), + 'group': obj.group, + 'names': toJson_CustomResourceDefinitionNames(obj.names), + 'preserveUnknownFields': obj.preserveUnknownFields, + 'scope': obj.scope, + 'versions': obj.versions?.map(y => toJson_CustomResourceDefinitionVersion(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -19372,31 +18340,25 @@ export interface StatusDetails { * @schema io.k8s.apimachinery.pkg.apis.meta.v1.StatusDetails#uid */ readonly uid?: string; + } /** * Converts an object of type 'StatusDetails' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_StatusDetails( - obj: StatusDetails | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_StatusDetails(obj: StatusDetails | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - causes: obj.causes?.map((y) => toJson_StatusCause(y)), - group: obj.group, - kind: obj.kind, - name: obj.name, - retryAfterSeconds: obj.retryAfterSeconds, - uid: obj.uid, + 'causes': obj.causes?.map(y => toJson_StatusCause(y)), + 'group': obj.group, + 'kind': obj.kind, + 'name': obj.name, + 'retryAfterSeconds': obj.retryAfterSeconds, + 'uid': obj.uid, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -19421,7 +18383,7 @@ export interface ApiServiceSpec { readonly group?: string; /** - * GroupPriorityMininum is the priority this group should have at least. Higher priority means that the group is preferred by clients over lower priority ones. Note that other versions of this group might specify even higher GroupPriorityMininum values such that the whole group gets a higher priority. The primary sort is based on GroupPriorityMinimum, ordered highest number to lowest (20 before 10). The secondary sort is based on the alphabetical comparison of the name of the object. (v1.bar before v1.foo) We'd recommend something like: *.k8s.io (except extensions) at 18000 and PaaSes (OpenShift, Deis) are recommended to be in the 2000s + * GroupPriorityMinimum is the priority this group should have at least. Higher priority means that the group is preferred by clients over lower priority ones. Note that other versions of this group might specify even higher GroupPriorityMinimum values such that the whole group gets a higher priority. The primary sort is based on GroupPriorityMinimum, ordered highest number to lowest (20 before 10). The secondary sort is based on the alphabetical comparison of the name of the object. (v1.bar before v1.foo) We'd recommend something like: *.k8s.io (except extensions) at 18000 and PaaSes (OpenShift, Deis) are recommended to be in the 2000s * * @schema io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceSpec#groupPriorityMinimum */ @@ -19454,32 +18416,26 @@ export interface ApiServiceSpec { * @schema io.k8s.kube-aggregator.pkg.apis.apiregistration.v1.APIServiceSpec#versionPriority */ readonly versionPriority: number; + } /** * Converts an object of type 'ApiServiceSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ApiServiceSpec( - obj: ApiServiceSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ApiServiceSpec(obj: ApiServiceSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - caBundle: obj.caBundle, - group: obj.group, - groupPriorityMinimum: obj.groupPriorityMinimum, - insecureSkipTLSVerify: obj.insecureSkipTlsVerify, - service: toJson_ServiceReference(obj.service), - version: obj.version, - versionPriority: obj.versionPriority, + 'caBundle': obj.caBundle, + 'group': obj.group, + 'groupPriorityMinimum': obj.groupPriorityMinimum, + 'insecureSkipTLSVerify': obj.insecureSkipTlsVerify, + 'service': toJson_ServiceReference(obj.service), + 'version': obj.version, + 'versionPriority': obj.versionPriority, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -19537,32 +18493,26 @@ export interface ManagedFieldsEntry { * @schema io.k8s.apimachinery.pkg.apis.meta.v1.ManagedFieldsEntry#time */ readonly time?: Date; + } /** * Converts an object of type 'ManagedFieldsEntry' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ManagedFieldsEntry( - obj: ManagedFieldsEntry | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ManagedFieldsEntry(obj: ManagedFieldsEntry | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiVersion: obj.apiVersion, - fieldsType: obj.fieldsType, - fieldsV1: obj.fieldsV1, - manager: obj.manager, - operation: obj.operation, - subresource: obj.subresource, - time: obj.time?.toISOString(), + 'apiVersion': obj.apiVersion, + 'fieldsType': obj.fieldsType, + 'fieldsV1': obj.fieldsV1, + 'manager': obj.manager, + 'operation': obj.operation, + 'subresource': obj.subresource, + 'time': obj.time?.toISOString(), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -19614,31 +18564,25 @@ export interface OwnerReference { * @schema io.k8s.apimachinery.pkg.apis.meta.v1.OwnerReference#uid */ readonly uid: string; + } /** * Converts an object of type 'OwnerReference' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_OwnerReference( - obj: OwnerReference | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_OwnerReference(obj: OwnerReference | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiVersion: obj.apiVersion, - blockOwnerDeletion: obj.blockOwnerDeletion, - controller: obj.controller, - kind: obj.kind, - name: obj.name, - uid: obj.uid, + 'apiVersion': obj.apiVersion, + 'blockOwnerDeletion': obj.blockOwnerDeletion, + 'controller': obj.controller, + 'kind': obj.kind, + 'name': obj.name, + 'uid': obj.uid, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -19680,28 +18624,22 @@ export interface WebhookClientConfig { * @schema io.k8s.api.admissionregistration.v1.WebhookClientConfig#url */ readonly url?: string; + } /** * Converts an object of type 'WebhookClientConfig' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_WebhookClientConfig( - obj: WebhookClientConfig | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_WebhookClientConfig(obj: WebhookClientConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - caBundle: obj.caBundle, - service: toJson_ServiceReference(obj.service), - url: obj.url, + 'caBundle': obj.caBundle, + 'service': toJson_ServiceReference(obj.service), + 'url': obj.url, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -19722,122 +18660,522 @@ export interface MatchCondition { * * Required. * - * @schema io.k8s.api.admissionregistration.v1.MatchCondition#expression + * @schema io.k8s.api.admissionregistration.v1.MatchCondition#expression + */ + readonly expression: string; + + /** + * Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName') + * + * Required. + * + * @schema io.k8s.api.admissionregistration.v1.MatchCondition#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'MatchCondition' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_MatchCondition(obj: MatchCondition | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'expression': obj.expression, + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * RuleWithOperations is a tuple of Operations and Resources. It is recommended to make sure that all the tuple expansions are valid. + * + * @schema io.k8s.api.admissionregistration.v1.RuleWithOperations + */ +export interface RuleWithOperations { + /** + * APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. + * + * @schema io.k8s.api.admissionregistration.v1.RuleWithOperations#apiGroups + */ + readonly apiGroups?: string[]; + + /** + * APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required. + * + * @schema io.k8s.api.admissionregistration.v1.RuleWithOperations#apiVersions + */ + readonly apiVersions?: string[]; + + /** + * Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required. + * + * @schema io.k8s.api.admissionregistration.v1.RuleWithOperations#operations + */ + readonly operations?: string[]; + + /** + * Resources is a list of resources this rule applies to. + * + * For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '_/scale' means all scale subresources. '_/*' means all resources and their subresources. + * + * If wildcard is present, the validation rule will ensure resources do not overlap with each other. + * + * Depending on the enclosing object, subresources might not be allowed. Required. + * + * @schema io.k8s.api.admissionregistration.v1.RuleWithOperations#resources + */ + readonly resources?: string[]; + + /** + * scope specifies the scope of this rule. Valid values are "Cluster", "Namespaced", and "*" "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "*" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*". + * + * @default . + * @schema io.k8s.api.admissionregistration.v1.RuleWithOperations#scope + */ + readonly scope?: string; + +} + +/** + * Converts an object of type 'RuleWithOperations' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_RuleWithOperations(obj: RuleWithOperations | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiGroups': obj.apiGroups?.map(y => y), + 'apiVersions': obj.apiVersions?.map(y => y), + 'operations': obj.operations?.map(y => y), + 'resources': obj.resources?.map(y => y), + 'scope': obj.scope, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * AuditAnnotation describes how to produce an audit annotation for an API request. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.AuditAnnotation + */ +export interface AuditAnnotationV1Alpha1 { + /** + * key specifies the audit annotation key. The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length. + * + * The key is combined with the resource name of the ValidatingAdmissionPolicy to construct an audit annotation key: "{ValidatingAdmissionPolicy name}/{key}". + * + * If an admission webhook uses the same resource name as this ValidatingAdmissionPolicy and the same audit annotation key, the annotation key will be identical. In this case, the first annotation written with the key will be included in the audit event and all subsequent annotations with the same key will be discarded. + * + * Required. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.AuditAnnotation#key + */ + readonly key: string; + + /** + * valueExpression represents the expression which is evaluated by CEL to produce an audit annotation value. The expression must evaluate to either a string or null value. If the expression evaluates to a string, the audit annotation is included with the string value. If the expression evaluates to null or empty string the audit annotation will be omitted. The valueExpression may be no longer than 5kb in length. If the result of the valueExpression is more than 10kb in length, it will be truncated to 10kb. + * + * If multiple ValidatingAdmissionPolicyBinding resources match an API request, then the valueExpression will be evaluated for each binding. All unique values produced by the valueExpressions will be joined together in a comma-separated list. + * + * Required. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.AuditAnnotation#valueExpression + */ + readonly valueExpression: string; + +} + +/** + * Converts an object of type 'AuditAnnotationV1Alpha1' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_AuditAnnotationV1Alpha1(obj: AuditAnnotationV1Alpha1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'valueExpression': obj.valueExpression, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * @schema io.k8s.api.admissionregistration.v1alpha1.MatchCondition + */ +export interface MatchConditionV1Alpha1 { + /** + * Expression represents the expression which will be evaluated by CEL. Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables: + * + * 'object' - The object from the incoming request. The value is null for DELETE requests. 'oldObject' - The existing object. The value is null for CREATE requests. 'request' - Attributes of the admission request(/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. + * See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz + * 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the + * request resource. + * Documentation on CEL: https://kubernetes.io/docs/reference/using-api/cel/ + * + * Required. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.MatchCondition#expression + */ + readonly expression: string; + + /** + * Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName') + * + * Required. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.MatchCondition#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'MatchConditionV1Alpha1' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_MatchConditionV1Alpha1(obj: MatchConditionV1Alpha1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'expression': obj.expression, + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. The exclude rules take precedence over include rules (if a resource matches both, it is excluded) + * + * @schema io.k8s.api.admissionregistration.v1alpha1.MatchResources + */ +export interface MatchResourcesV1Alpha1 { + /** + * ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. The exclude rules take precedence over include rules (if a resource matches both, it is excluded) + * + * @schema io.k8s.api.admissionregistration.v1alpha1.MatchResources#excludeResourceRules + */ + readonly excludeResourceRules?: NamedRuleWithOperationsV1Alpha1[]; + + /** + * matchPolicy defines how the "MatchResources" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent". + * + * - Exact: match a request only if it exactly matches a specified rule. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, but "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would not be sent to the ValidatingAdmissionPolicy. + * + * - Equivalent: match a request if modifies a resource listed in rules, even via another API group or version. For example, if deployments can be modified via apps/v1, apps/v1beta1, and extensions/v1beta1, and "rules" only included `apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"]`, a request to apps/v1beta1 or extensions/v1beta1 would be converted to apps/v1 and sent to the ValidatingAdmissionPolicy. + * + * Defaults to "Equivalent" + * + * @default Equivalent" + * @schema io.k8s.api.admissionregistration.v1alpha1.MatchResources#matchPolicy + */ + readonly matchPolicy?: string; + + /** + * NamespaceSelector decides whether to run the admission control policy on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the policy. + * + * For example, to run the webhook on any objects whose namespace is not associated with "runlevel" of "0" or "1"; you will set the selector as follows: "namespaceSelector": { + * "matchExpressions": [ + * { + * "key": "runlevel", + * "operator": "NotIn", + * "values": [ + * "0", + * "1" + * ] + * } + * ] + * } + * + * If instead you want to only run the policy on any objects whose namespace is associated with the "environment" of "prod" or "staging"; you will set the selector as follows: "namespaceSelector": { + * "matchExpressions": [ + * { + * "key": "environment", + * "operator": "In", + * "values": [ + * "prod", + * "staging" + * ] + * } + * ] + * } + * + * See https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors. + * + * Default to the empty LabelSelector, which matches everything. + * + * @default the empty LabelSelector, which matches everything. + * @schema io.k8s.api.admissionregistration.v1alpha1.MatchResources#namespaceSelector + */ + readonly namespaceSelector?: LabelSelector; + + /** + * ObjectSelector decides whether to run the validation based on if the object has matching labels. objectSelector is evaluated against both the oldObject and newObject that would be sent to the cel validation, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything. + * + * @default the empty LabelSelector, which matches everything. + * @schema io.k8s.api.admissionregistration.v1alpha1.MatchResources#objectSelector + */ + readonly objectSelector?: LabelSelector; + + /** + * ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. The policy cares about an operation if it matches _any_ Rule. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.MatchResources#resourceRules + */ + readonly resourceRules?: NamedRuleWithOperationsV1Alpha1[]; + +} + +/** + * Converts an object of type 'MatchResourcesV1Alpha1' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_MatchResourcesV1Alpha1(obj: MatchResourcesV1Alpha1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'excludeResourceRules': obj.excludeResourceRules?.map(y => toJson_NamedRuleWithOperationsV1Alpha1(y)), + 'matchPolicy': obj.matchPolicy, + 'namespaceSelector': toJson_LabelSelector(obj.namespaceSelector), + 'objectSelector': toJson_LabelSelector(obj.objectSelector), + 'resourceRules': obj.resourceRules?.map(y => toJson_NamedRuleWithOperationsV1Alpha1(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ParamKind is a tuple of Group Kind and Version. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.ParamKind + */ +export interface ParamKindV1Alpha1 { + /** + * APIVersion is the API group version the resources belong to. In format of "group/version". Required. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.ParamKind#apiVersion + */ + readonly apiVersion?: string; + + /** + * Kind is the API kind the resources belong to. Required. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.ParamKind#kind + */ + readonly kind?: string; + +} + +/** + * Converts an object of type 'ParamKindV1Alpha1' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ParamKindV1Alpha1(obj: ParamKindV1Alpha1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiVersion': obj.apiVersion, + 'kind': obj.kind, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Validation specifies the CEL expression which is used to apply the validation. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.Validation + */ +export interface ValidationV1Alpha1 { + /** + * Expression represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables: + * + * - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. + * For example, a variable named 'foo' can be accessed as 'variables.foo'. + * - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. + * See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz + * - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the + * request resource. + * + * The `apiVersion`, `kind`, `metadata.name` and `metadata.generateName` are always accessible from the root of the object. No other metadata properties are accessible. + * + * Only property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible. Accessible property names are escaped according to the following rules when accessed in the expression: - '__' escapes to '__underscores__' - '.' escapes to '__dot__' - '-' escapes to '__dash__' - '/' escapes to '__slash__' - Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are: + * "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", + * "import", "let", "loop", "package", "namespace", "return". + * Examples: + * - Expression accessing a property named "namespace": {"Expression": "object.__namespace__ > 0"} + * - Expression accessing a property named "x-prop": {"Expression": "object.x__dash__prop > 0"} + * - Expression accessing a property named "redact__d": {"Expression": "object.redact__underscores__d > 0"} + * + * Equality on arrays with list type of 'set' or 'map' ignores element order, i.e. [1, 2] == [2, 1]. Concatenation on arrays with x-kubernetes-list-type use the semantics of the list type: + * - 'set': `X + Y` performs a union where the array positions of all elements in `X` are preserved and + * non-intersecting elements in `Y` are appended, retaining their partial order. + * - 'map': `X + Y` performs a merge where the array positions of all keys in `X` are preserved but the values + * are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with + * non-intersecting keys are appended, retaining their partial order. + * Required. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.Validation#expression + */ + readonly expression: string; + + /** + * Message represents the message displayed when validation fails. The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is "failed rule: {Rule}". e.g. "must be a URL with the host matching spec.host" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is "failed Expression: {Expression}". + * + * @schema io.k8s.api.admissionregistration.v1alpha1.Validation#message + */ + readonly message?: string; + + /** + * messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: "object.x must be less than max ("+string(params.max)+")" + * + * @schema io.k8s.api.admissionregistration.v1alpha1.Validation#messageExpression + */ + readonly messageExpression?: string; + + /** + * Reason represents a machine-readable description of why this validation failed. If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge". If not set, StatusReasonInvalid is used in the response to the client. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.Validation#reason + */ + readonly reason?: string; + +} + +/** + * Converts an object of type 'ValidationV1Alpha1' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ValidationV1Alpha1(obj: ValidationV1Alpha1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'expression': obj.expression, + 'message': obj.message, + 'messageExpression': obj.messageExpression, + 'reason': obj.reason, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * Variable is the definition of a variable that is used for composition. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.Variable + */ +export interface VariableV1Alpha1 { + /** + * Expression is the expression that will be evaluated as the value of the variable. The CEL expression has access to the same identifiers as the CEL expressions in Validation. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.Variable#expression */ readonly expression: string; /** - * Name is an identifier for this match condition, used for strategic merging of MatchConditions, as well as providing an identifier for logging purposes. A good name should be descriptive of the associated expression. Name must be a qualified name consisting of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName', or 'my.name', or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName') + * Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is "foo", the variable will be available as `variables.foo` * - * Required. - * - * @schema io.k8s.api.admissionregistration.v1.MatchCondition#name + * @schema io.k8s.api.admissionregistration.v1alpha1.Variable#name */ readonly name: string; + } /** - * Converts an object of type 'MatchCondition' to JSON representation. + * Converts an object of type 'VariableV1Alpha1' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_MatchCondition( - obj: MatchCondition | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_VariableV1Alpha1(obj: VariableV1Alpha1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - expression: obj.expression, - name: obj.name, + 'expression': obj.expression, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** - * RuleWithOperations is a tuple of Operations and Resources. It is recommended to make sure that all the tuple expansions are valid. + * ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding. * - * @schema io.k8s.api.admissionregistration.v1.RuleWithOperations + * @schema io.k8s.api.admissionregistration.v1alpha1.ParamRef */ -export interface RuleWithOperations { +export interface ParamRefV1Alpha1 { /** - * APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. + * `name` is the name of the resource being referenced. * - * @schema io.k8s.api.admissionregistration.v1.RuleWithOperations#apiGroups + * `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.ParamRef#name */ - readonly apiGroups?: string[]; + readonly name?: string; /** - * APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required. + * namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields. * - * @schema io.k8s.api.admissionregistration.v1.RuleWithOperations#apiVersions + * A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty. + * + * - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error. + * + * - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error. + * + * @schema io.k8s.api.admissionregistration.v1alpha1.ParamRef#namespace */ - readonly apiVersions?: string[]; + readonly namespace?: string; /** - * Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required. + * `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy. * - * @schema io.k8s.api.admissionregistration.v1.RuleWithOperations#operations + * Allowed values are `Allow` or `Deny` Default to `Deny` + * + * @default Deny` + * @schema io.k8s.api.admissionregistration.v1alpha1.ParamRef#parameterNotFoundAction */ - readonly operations?: string[]; + readonly parameterNotFoundAction?: string; /** - * Resources is a list of resources this rule applies to. - * - * For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '_/scale' means all scale subresources. '_/*' means all resources and their subresources. + * selector can be used to match multiple param objects based on their labels. Supply selector: {} to match all resources of the ParamKind. * - * If wildcard is present, the validation rule will ensure resources do not overlap with each other. + * If multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together. * - * Depending on the enclosing object, subresources might not be allowed. Required. + * One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. * - * @schema io.k8s.api.admissionregistration.v1.RuleWithOperations#resources + * @schema io.k8s.api.admissionregistration.v1alpha1.ParamRef#selector */ - readonly resources?: string[]; + readonly selector?: LabelSelector; - /** - * scope specifies the scope of this rule. Valid values are "Cluster", "Namespaced", and "*" "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "*" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*". - * - * @default . - * @schema io.k8s.api.admissionregistration.v1.RuleWithOperations#scope - */ - readonly scope?: string; } /** - * Converts an object of type 'RuleWithOperations' to JSON representation. + * Converts an object of type 'ParamRefV1Alpha1' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_RuleWithOperations( - obj: RuleWithOperations | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ParamRefV1Alpha1(obj: ParamRefV1Alpha1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiGroups: obj.apiGroups?.map((y) => y), - apiVersions: obj.apiVersions?.map((y) => y), - operations: obj.operations?.map((y) => y), - resources: obj.resources?.map((y) => y), - scope: obj.scope, + 'name': obj.name, + 'namespace': obj.namespace, + 'parameterNotFoundAction': obj.parameterNotFoundAction, + 'selector': toJson_LabelSelector(obj.selector), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * AuditAnnotation describes how to produce an audit annotation for an API request. * - * @schema io.k8s.api.admissionregistration.v1alpha1.AuditAnnotation + * @schema io.k8s.api.admissionregistration.v1beta1.AuditAnnotation */ -export interface AuditAnnotationV1Alpha1 { +export interface AuditAnnotationV1Beta1 { /** * key specifies the audit annotation key. The audit annotation keys of a ValidatingAdmissionPolicy must be unique. The key must be a qualified name ([A-Za-z0-9][-A-Za-z0-9_.]*) no more than 63 bytes in length. * @@ -19847,7 +19185,7 @@ export interface AuditAnnotationV1Alpha1 { * * Required. * - * @schema io.k8s.api.admissionregistration.v1alpha1.AuditAnnotation#key + * @schema io.k8s.api.admissionregistration.v1beta1.AuditAnnotation#key */ readonly key: string; @@ -19858,37 +19196,33 @@ export interface AuditAnnotationV1Alpha1 { * * Required. * - * @schema io.k8s.api.admissionregistration.v1alpha1.AuditAnnotation#valueExpression + * @schema io.k8s.api.admissionregistration.v1beta1.AuditAnnotation#valueExpression */ readonly valueExpression: string; + } /** - * Converts an object of type 'AuditAnnotationV1Alpha1' to JSON representation. + * Converts an object of type 'AuditAnnotationV1Beta1' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_AuditAnnotationV1Alpha1( - obj: AuditAnnotationV1Alpha1 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_AuditAnnotationV1Beta1(obj: AuditAnnotationV1Beta1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - key: obj.key, - valueExpression: obj.valueExpression, + 'key': obj.key, + 'valueExpression': obj.valueExpression, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** - * @schema io.k8s.api.admissionregistration.v1alpha1.MatchCondition + * MatchCondition represents a condition which must be fulfilled for a request to be sent to a webhook. + * + * @schema io.k8s.api.admissionregistration.v1beta1.MatchCondition */ -export interface MatchConditionV1Alpha1 { +export interface MatchConditionV1Beta1 { /** * Expression represents the expression which will be evaluated by CEL. Must evaluate to bool. CEL expressions have access to the contents of the AdmissionRequest and Authorizer, organized into CEL variables: * @@ -19900,7 +19234,7 @@ export interface MatchConditionV1Alpha1 { * * Required. * - * @schema io.k8s.api.admissionregistration.v1alpha1.MatchCondition#expression + * @schema io.k8s.api.admissionregistration.v1beta1.MatchCondition#expression */ readonly expression: string; @@ -19909,45 +19243,39 @@ export interface MatchConditionV1Alpha1 { * * Required. * - * @schema io.k8s.api.admissionregistration.v1alpha1.MatchCondition#name + * @schema io.k8s.api.admissionregistration.v1beta1.MatchCondition#name */ readonly name: string; + } /** - * Converts an object of type 'MatchConditionV1Alpha1' to JSON representation. + * Converts an object of type 'MatchConditionV1Beta1' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_MatchConditionV1Alpha1( - obj: MatchConditionV1Alpha1 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_MatchConditionV1Beta1(obj: MatchConditionV1Beta1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - expression: obj.expression, - name: obj.name, + 'expression': obj.expression, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * MatchResources decides whether to run the admission control policy on an object based on whether it meets the match criteria. The exclude rules take precedence over include rules (if a resource matches both, it is excluded) * - * @schema io.k8s.api.admissionregistration.v1alpha1.MatchResources + * @schema io.k8s.api.admissionregistration.v1beta1.MatchResources */ -export interface MatchResourcesV1Alpha1 { +export interface MatchResourcesV1Beta1 { /** * ExcludeResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy should not care about. The exclude rules take precedence over include rules (if a resource matches both, it is excluded) * - * @schema io.k8s.api.admissionregistration.v1alpha1.MatchResources#excludeResourceRules + * @schema io.k8s.api.admissionregistration.v1beta1.MatchResources#excludeResourceRules */ - readonly excludeResourceRules?: NamedRuleWithOperationsV1Alpha1[]; + readonly excludeResourceRules?: NamedRuleWithOperationsV1Beta1[]; /** * matchPolicy defines how the "MatchResources" list is used to match incoming requests. Allowed values are "Exact" or "Equivalent". @@ -19959,7 +19287,7 @@ export interface MatchResourcesV1Alpha1 { * Defaults to "Equivalent" * * @default Equivalent" - * @schema io.k8s.api.admissionregistration.v1alpha1.MatchResources#matchPolicy + * @schema io.k8s.api.admissionregistration.v1beta1.MatchResources#matchPolicy */ readonly matchPolicy?: string; @@ -19997,7 +19325,7 @@ export interface MatchResourcesV1Alpha1 { * Default to the empty LabelSelector, which matches everything. * * @default the empty LabelSelector, which matches everything. - * @schema io.k8s.api.admissionregistration.v1alpha1.MatchResources#namespaceSelector + * @schema io.k8s.api.admissionregistration.v1beta1.MatchResources#namespaceSelector */ readonly namespaceSelector?: LabelSelector; @@ -20005,100 +19333,86 @@ export interface MatchResourcesV1Alpha1 { * ObjectSelector decides whether to run the validation based on if the object has matching labels. objectSelector is evaluated against both the oldObject and newObject that would be sent to the cel validation, and is considered to match if either object matches the selector. A null object (oldObject in the case of create, or newObject in the case of delete) or an object that cannot have labels (like a DeploymentRollback or a PodProxyOptions object) is not considered to match. Use the object selector only if the webhook is opt-in, because end users may skip the admission webhook by setting the labels. Default to the empty LabelSelector, which matches everything. * * @default the empty LabelSelector, which matches everything. - * @schema io.k8s.api.admissionregistration.v1alpha1.MatchResources#objectSelector + * @schema io.k8s.api.admissionregistration.v1beta1.MatchResources#objectSelector */ readonly objectSelector?: LabelSelector; /** * ResourceRules describes what operations on what resources/subresources the ValidatingAdmissionPolicy matches. The policy cares about an operation if it matches _any_ Rule. * - * @schema io.k8s.api.admissionregistration.v1alpha1.MatchResources#resourceRules + * @schema io.k8s.api.admissionregistration.v1beta1.MatchResources#resourceRules */ - readonly resourceRules?: NamedRuleWithOperationsV1Alpha1[]; + readonly resourceRules?: NamedRuleWithOperationsV1Beta1[]; + } /** - * Converts an object of type 'MatchResourcesV1Alpha1' to JSON representation. + * Converts an object of type 'MatchResourcesV1Beta1' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_MatchResourcesV1Alpha1( - obj: MatchResourcesV1Alpha1 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_MatchResourcesV1Beta1(obj: MatchResourcesV1Beta1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - excludeResourceRules: obj.excludeResourceRules?.map((y) => - toJson_NamedRuleWithOperationsV1Alpha1(y), - ), - matchPolicy: obj.matchPolicy, - namespaceSelector: toJson_LabelSelector(obj.namespaceSelector), - objectSelector: toJson_LabelSelector(obj.objectSelector), - resourceRules: obj.resourceRules?.map((y) => - toJson_NamedRuleWithOperationsV1Alpha1(y), - ), + 'excludeResourceRules': obj.excludeResourceRules?.map(y => toJson_NamedRuleWithOperationsV1Beta1(y)), + 'matchPolicy': obj.matchPolicy, + 'namespaceSelector': toJson_LabelSelector(obj.namespaceSelector), + 'objectSelector': toJson_LabelSelector(obj.objectSelector), + 'resourceRules': obj.resourceRules?.map(y => toJson_NamedRuleWithOperationsV1Beta1(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * ParamKind is a tuple of Group Kind and Version. * - * @schema io.k8s.api.admissionregistration.v1alpha1.ParamKind + * @schema io.k8s.api.admissionregistration.v1beta1.ParamKind */ -export interface ParamKindV1Alpha1 { +export interface ParamKindV1Beta1 { /** * APIVersion is the API group version the resources belong to. In format of "group/version". Required. * - * @schema io.k8s.api.admissionregistration.v1alpha1.ParamKind#apiVersion + * @schema io.k8s.api.admissionregistration.v1beta1.ParamKind#apiVersion */ readonly apiVersion?: string; /** * Kind is the API kind the resources belong to. Required. * - * @schema io.k8s.api.admissionregistration.v1alpha1.ParamKind#kind + * @schema io.k8s.api.admissionregistration.v1beta1.ParamKind#kind */ readonly kind?: string; + } /** - * Converts an object of type 'ParamKindV1Alpha1' to JSON representation. + * Converts an object of type 'ParamKindV1Beta1' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ParamKindV1Alpha1( - obj: ParamKindV1Alpha1 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ParamKindV1Beta1(obj: ParamKindV1Beta1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiVersion: obj.apiVersion, - kind: obj.kind, + 'apiVersion': obj.apiVersion, + 'kind': obj.kind, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * Validation specifies the CEL expression which is used to apply the validation. * - * @schema io.k8s.api.admissionregistration.v1alpha1.Validation + * @schema io.k8s.api.admissionregistration.v1beta1.Validation */ -export interface ValidationV1Alpha1 { +export interface ValidationV1Beta1 { /** * Expression represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec CEL expressions have access to the contents of the API request/response, organized into CEL variables as well as some other useful variables: * - * - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. + * - 'object' - The object from the incoming request. The value is null for DELETE requests. - 'oldObject' - The existing object. The value is null for CREATE requests. - 'request' - Attributes of the API request([ref](/pkg/apis/admission/types.go#AdmissionRequest)). - 'params' - Parameter resource referred to by the policy binding being evaluated. Only populated if the policy has a ParamKind. - 'namespaceObject' - The namespace object that the incoming object belongs to. The value is null for cluster-scoped resources. - 'variables' - Map of composited variables, from its name to its lazily evaluated value. + * For example, a variable named 'foo' can be accessed as 'variables.foo'. + * - 'authorizer' - A CEL Authorizer. May be used to perform authorization checks for the principal (user or service account) of the request. * See https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz * - 'authorizer.requestResource' - A CEL ResourceCheck constructed from the 'authorizer' and configured with the * request resource. @@ -20121,96 +19435,155 @@ export interface ValidationV1Alpha1 { * non-intersecting keys are appended, retaining their partial order. * Required. * - * @schema io.k8s.api.admissionregistration.v1alpha1.Validation#expression + * @schema io.k8s.api.admissionregistration.v1beta1.Validation#expression */ readonly expression: string; /** * Message represents the message displayed when validation fails. The message is required if the Expression contains line breaks. The message must not contain line breaks. If unset, the message is "failed rule: {Rule}". e.g. "must be a URL with the host matching spec.host" If the Expression contains line breaks. Message is required. The message must not contain line breaks. If unset, the message is "failed Expression: {Expression}". * - * @schema io.k8s.api.admissionregistration.v1alpha1.Validation#message + * @schema io.k8s.api.admissionregistration.v1beta1.Validation#message */ readonly message?: string; /** * messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. Since messageExpression is used as a failure message, it must evaluate to a string. If both message and messageExpression are present on a validation, then messageExpression will be used if validation fails. If messageExpression results in a runtime error, the runtime error is logged, and the validation failure message is produced as if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string that contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset, and the fact that messageExpression produced an empty string/string with only spaces/string with line breaks will be logged. messageExpression has access to all the same variables as the `expression` except for 'authorizer' and 'authorizer.requestResource'. Example: "object.x must be less than max ("+string(params.max)+")" * - * @schema io.k8s.api.admissionregistration.v1alpha1.Validation#messageExpression + * @schema io.k8s.api.admissionregistration.v1beta1.Validation#messageExpression */ readonly messageExpression?: string; /** * Reason represents a machine-readable description of why this validation failed. If this is the first validation in the list to fail, this reason, as well as the corresponding HTTP response code, are used in the HTTP response to the client. The currently supported reasons are: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge". If not set, StatusReasonInvalid is used in the response to the client. * - * @schema io.k8s.api.admissionregistration.v1alpha1.Validation#reason + * @schema io.k8s.api.admissionregistration.v1beta1.Validation#reason */ readonly reason?: string; + } /** - * Converts an object of type 'ValidationV1Alpha1' to JSON representation. + * Converts an object of type 'ValidationV1Beta1' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ValidationV1Alpha1( - obj: ValidationV1Alpha1 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ValidationV1Beta1(obj: ValidationV1Beta1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - expression: obj.expression, - message: obj.message, - messageExpression: obj.messageExpression, - reason: obj.reason, + 'expression': obj.expression, + 'message': obj.message, + 'messageExpression': obj.messageExpression, + 'reason': obj.reason, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** - * ParamRef references a parameter resource + * Variable is the definition of a variable that is used for composition. A variable is defined as a named expression. * - * @schema io.k8s.api.admissionregistration.v1alpha1.ParamRef + * @schema io.k8s.api.admissionregistration.v1beta1.Variable */ -export interface ParamRefV1Alpha1 { +export interface VariableV1Beta1 { /** - * Name of the resource being referenced. + * Expression is the expression that will be evaluated as the value of the variable. The CEL expression has access to the same identifiers as the CEL expressions in Validation. * - * @schema io.k8s.api.admissionregistration.v1alpha1.ParamRef#name + * @schema io.k8s.api.admissionregistration.v1beta1.Variable#expression + */ + readonly expression: string; + + /** + * Name is the name of the variable. The name must be a valid CEL identifier and unique among all variables. The variable can be accessed in other expressions through `variables` For example, if name is "foo", the variable will be available as `variables.foo` + * + * @schema io.k8s.api.admissionregistration.v1beta1.Variable#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'VariableV1Beta1' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_VariableV1Beta1(obj: VariableV1Beta1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'expression': obj.expression, + 'name': obj.name, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ParamRef describes how to locate the params to be used as input to expressions of rules applied by a policy binding. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ParamRef + */ +export interface ParamRefV1Beta1 { + /** + * name is the name of the resource being referenced. + * + * One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. + * + * A single parameter used for all admission requests can be configured by setting the `name` field, leaving `selector` blank, and setting namespace if `paramKind` is namespace-scoped. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ParamRef#name */ readonly name?: string; /** - * Namespace of the referenced resource. Should be empty for the cluster-scoped resources + * namespace is the namespace of the referenced resource. Allows limiting the search for params to a specific namespace. Applies to both `name` and `selector` fields. * - * @schema io.k8s.api.admissionregistration.v1alpha1.ParamRef#namespace + * A per-namespace parameter may be used by specifying a namespace-scoped `paramKind` in the policy and leaving this field empty. + * + * - If `paramKind` is cluster-scoped, this field MUST be unset. Setting this field results in a configuration error. + * + * - If `paramKind` is namespace-scoped, the namespace of the object being evaluated for admission will be used when this field is left unset. Take care that if this is left empty the binding must not match any cluster-scoped resources, which will result in an error. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ParamRef#namespace */ readonly namespace?: string; + + /** + * `parameterNotFoundAction` controls the behavior of the binding when the resource exists, and name or selector is valid, but there are no parameters matched by the binding. If the value is set to `Allow`, then no matched parameters will be treated as successful validation by the binding. If set to `Deny`, then no matched parameters will be subject to the `failurePolicy` of the policy. + * + * Allowed values are `Allow` or `Deny` + * + * Required + * + * @schema io.k8s.api.admissionregistration.v1beta1.ParamRef#parameterNotFoundAction + */ + readonly parameterNotFoundAction?: string; + + /** + * selector can be used to match multiple param objects based on their labels. Supply selector: {} to match all resources of the ParamKind. + * + * If multiple params are found, they are all evaluated with the policy expressions and the results are ANDed together. + * + * One of `name` or `selector` must be set, but `name` and `selector` are mutually exclusive properties. If one is set, the other must be unset. + * + * @schema io.k8s.api.admissionregistration.v1beta1.ParamRef#selector + */ + readonly selector?: LabelSelector; + } /** - * Converts an object of type 'ParamRefV1Alpha1' to JSON representation. + * Converts an object of type 'ParamRefV1Beta1' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ParamRefV1Alpha1( - obj: ParamRefV1Alpha1 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ParamRefV1Beta1(obj: ParamRefV1Beta1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, - namespace: obj.namespace, + 'name': obj.name, + 'namespace': obj.namespace, + 'parameterNotFoundAction': obj.parameterNotFoundAction, + 'selector': toJson_LabelSelector(obj.selector), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -20234,27 +19607,21 @@ export interface DaemonSetUpdateStrategy { * @schema io.k8s.api.apps.v1.DaemonSetUpdateStrategy#type */ readonly type?: string; + } /** * Converts an object of type 'DaemonSetUpdateStrategy' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_DaemonSetUpdateStrategy( - obj: DaemonSetUpdateStrategy | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_DaemonSetUpdateStrategy(obj: DaemonSetUpdateStrategy | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - rollingUpdate: toJson_RollingUpdateDaemonSet(obj.rollingUpdate), - type: obj.type, + 'rollingUpdate': toJson_RollingUpdateDaemonSet(obj.rollingUpdate), + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -20278,27 +19645,21 @@ export interface DeploymentStrategy { * @schema io.k8s.api.apps.v1.DeploymentStrategy#type */ readonly type?: string; + } /** * Converts an object of type 'DeploymentStrategy' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_DeploymentStrategy( - obj: DeploymentStrategy | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_DeploymentStrategy(obj: DeploymentStrategy | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - rollingUpdate: toJson_RollingUpdateDeployment(obj.rollingUpdate), - type: obj.type, + 'rollingUpdate': toJson_RollingUpdateDeployment(obj.rollingUpdate), + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -20317,26 +19678,20 @@ export interface StatefulSetOrdinals { * @schema io.k8s.api.apps.v1.StatefulSetOrdinals#start */ readonly start?: number; + } /** * Converts an object of type 'StatefulSetOrdinals' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_StatefulSetOrdinals( - obj: StatefulSetOrdinals | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_StatefulSetOrdinals(obj: StatefulSetOrdinals | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - start: obj.start, + 'start': obj.start, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -20359,27 +19714,21 @@ export interface StatefulSetPersistentVolumeClaimRetentionPolicy { * @schema io.k8s.api.apps.v1.StatefulSetPersistentVolumeClaimRetentionPolicy#whenScaled */ readonly whenScaled?: string; + } /** * Converts an object of type 'StatefulSetPersistentVolumeClaimRetentionPolicy' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_StatefulSetPersistentVolumeClaimRetentionPolicy( - obj: StatefulSetPersistentVolumeClaimRetentionPolicy | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_StatefulSetPersistentVolumeClaimRetentionPolicy(obj: StatefulSetPersistentVolumeClaimRetentionPolicy | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - whenDeleted: obj.whenDeleted, - whenScaled: obj.whenScaled, + 'whenDeleted': obj.whenDeleted, + 'whenScaled': obj.whenScaled, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -20403,27 +19752,21 @@ export interface StatefulSetUpdateStrategy { * @schema io.k8s.api.apps.v1.StatefulSetUpdateStrategy#type */ readonly type?: string; + } /** * Converts an object of type 'StatefulSetUpdateStrategy' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_StatefulSetUpdateStrategy( - obj: StatefulSetUpdateStrategy | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_StatefulSetUpdateStrategy(obj: StatefulSetUpdateStrategy | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - rollingUpdate: toJson_RollingUpdateStatefulSetStrategy(obj.rollingUpdate), - type: obj.type, + 'rollingUpdate': toJson_RollingUpdateStatefulSetStrategy(obj.rollingUpdate), + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -20460,29 +19803,23 @@ export interface BoundObjectReference { * @schema io.k8s.api.authentication.v1.BoundObjectReference#uid */ readonly uid?: string; + } /** * Converts an object of type 'BoundObjectReference' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_BoundObjectReference( - obj: BoundObjectReference | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_BoundObjectReference(obj: BoundObjectReference | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiVersion: obj.apiVersion, - kind: obj.kind, - name: obj.name, - uid: obj.uid, + 'apiVersion': obj.apiVersion, + 'kind': obj.kind, + 'name': obj.name, + 'uid': obj.uid, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -20505,27 +19842,21 @@ export interface NonResourceAttributes { * @schema io.k8s.api.authorization.v1.NonResourceAttributes#verb */ readonly verb?: string; + } /** * Converts an object of type 'NonResourceAttributes' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NonResourceAttributes( - obj: NonResourceAttributes | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NonResourceAttributes(obj: NonResourceAttributes | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - path: obj.path, - verb: obj.verb, + 'path': obj.path, + 'verb': obj.verb, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -20583,32 +19914,26 @@ export interface ResourceAttributes { * @schema io.k8s.api.authorization.v1.ResourceAttributes#version */ readonly version?: string; + } /** * Converts an object of type 'ResourceAttributes' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ResourceAttributes( - obj: ResourceAttributes | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ResourceAttributes(obj: ResourceAttributes | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - group: obj.group, - name: obj.name, - namespace: obj.namespace, - resource: obj.resource, - subresource: obj.subresource, - verb: obj.verb, - version: obj.version, + 'group': obj.group, + 'name': obj.name, + 'namespace': obj.namespace, + 'resource': obj.resource, + 'subresource': obj.subresource, + 'verb': obj.verb, + 'version': obj.version, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -20638,28 +19963,22 @@ export interface CrossVersionObjectReference { * @schema io.k8s.api.autoscaling.v1.CrossVersionObjectReference#name */ readonly name: string; + } /** * Converts an object of type 'CrossVersionObjectReference' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CrossVersionObjectReference( - obj: CrossVersionObjectReference | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CrossVersionObjectReference(obj: CrossVersionObjectReference | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiVersion: obj.apiVersion, - kind: obj.kind, - name: obj.name, + 'apiVersion': obj.apiVersion, + 'kind': obj.kind, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -20685,27 +20004,21 @@ export interface HorizontalPodAutoscalerBehaviorV2 { * @schema io.k8s.api.autoscaling.v2.HorizontalPodAutoscalerBehavior#scaleUp */ readonly scaleUp?: HpaScalingRulesV2; + } /** * Converts an object of type 'HorizontalPodAutoscalerBehaviorV2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_HorizontalPodAutoscalerBehaviorV2( - obj: HorizontalPodAutoscalerBehaviorV2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_HorizontalPodAutoscalerBehaviorV2(obj: HorizontalPodAutoscalerBehaviorV2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - scaleDown: toJson_HpaScalingRulesV2(obj.scaleDown), - scaleUp: toJson_HpaScalingRulesV2(obj.scaleUp), + 'scaleDown': toJson_HpaScalingRulesV2(obj.scaleDown), + 'scaleUp': toJson_HpaScalingRulesV2(obj.scaleUp), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -20756,33 +20069,25 @@ export interface MetricSpecV2 { * @schema io.k8s.api.autoscaling.v2.MetricSpec#type */ readonly type: string; + } /** * Converts an object of type 'MetricSpecV2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_MetricSpecV2( - obj: MetricSpecV2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_MetricSpecV2(obj: MetricSpecV2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - containerResource: toJson_ContainerResourceMetricSourceV2( - obj.containerResource, - ), - external: toJson_ExternalMetricSourceV2(obj.external), - object: toJson_ObjectMetricSourceV2(obj.object), - pods: toJson_PodsMetricSourceV2(obj.pods), - resource: toJson_ResourceMetricSourceV2(obj.resource), - type: obj.type, + 'containerResource': toJson_ContainerResourceMetricSourceV2(obj.containerResource), + 'external': toJson_ExternalMetricSourceV2(obj.external), + 'object': toJson_ObjectMetricSourceV2(obj.object), + 'pods': toJson_PodsMetricSourceV2(obj.pods), + 'resource': toJson_ResourceMetricSourceV2(obj.resource), + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -20812,28 +20117,22 @@ export interface CrossVersionObjectReferenceV2 { * @schema io.k8s.api.autoscaling.v2.CrossVersionObjectReference#name */ readonly name: string; + } /** * Converts an object of type 'CrossVersionObjectReferenceV2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CrossVersionObjectReferenceV2( - obj: CrossVersionObjectReferenceV2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CrossVersionObjectReferenceV2(obj: CrossVersionObjectReferenceV2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiVersion: obj.apiVersion, - kind: obj.kind, - name: obj.name, + 'apiVersion': obj.apiVersion, + 'kind': obj.kind, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -20856,27 +20155,21 @@ export interface JobTemplateSpec { * @schema io.k8s.api.batch.v1.JobTemplateSpec#spec */ readonly spec?: JobSpec; + } /** * Converts an object of type 'JobTemplateSpec' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_JobTemplateSpec( - obj: JobTemplateSpec | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_JobTemplateSpec(obj: JobTemplateSpec | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_JobSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_JobSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -20892,26 +20185,20 @@ export interface PodFailurePolicy { * @schema io.k8s.api.batch.v1.PodFailurePolicy#rules */ readonly rules: PodFailurePolicyRule[]; + } /** * Converts an object of type 'PodFailurePolicy' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodFailurePolicy( - obj: PodFailurePolicy | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodFailurePolicy(obj: PodFailurePolicy | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - rules: obj.rules?.map((y) => toJson_PodFailurePolicyRule(y)), + 'rules': obj.rules?.map(y => toJson_PodFailurePolicyRule(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -20948,29 +20235,23 @@ export interface EndpointAddress { * @schema io.k8s.api.core.v1.EndpointAddress#targetRef */ readonly targetRef?: ObjectReference; + } /** * Converts an object of type 'EndpointAddress' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_EndpointAddress( - obj: EndpointAddress | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_EndpointAddress(obj: EndpointAddress | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - hostname: obj.hostname, - ip: obj.ip, - nodeName: obj.nodeName, - targetRef: toJson_ObjectReference(obj.targetRef), + 'hostname': obj.hostname, + 'ip': obj.ip, + 'nodeName': obj.nodeName, + 'targetRef': toJson_ObjectReference(obj.targetRef), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -21021,61 +20302,25 @@ export interface LimitRangeItem { * @schema io.k8s.api.core.v1.LimitRangeItem#type */ readonly type: string; + } /** * Converts an object of type 'LimitRangeItem' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_LimitRangeItem( - obj: LimitRangeItem | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } - const result = { - default: - obj.default === undefined - ? undefined - : Object.entries(obj.default).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1]?.value }), - {}, - ), - defaultRequest: - obj.defaultRequest === undefined - ? undefined - : Object.entries(obj.defaultRequest).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1]?.value }), - {}, - ), - max: - obj.max === undefined - ? undefined - : Object.entries(obj.max).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1]?.value }), - {}, - ), - maxLimitRequestRatio: - obj.maxLimitRequestRatio === undefined - ? undefined - : Object.entries(obj.maxLimitRequestRatio).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1]?.value }), - {}, - ), - min: - obj.min === undefined - ? undefined - : Object.entries(obj.min).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1]?.value }), - {}, - ), - type: obj.type, - }; - // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); +export function toJson_LimitRangeItem(obj: LimitRangeItem | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'default': ((obj.default) === undefined) ? undefined : (Object.entries(obj.default).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1]?.value }), {})), + 'defaultRequest': ((obj.defaultRequest) === undefined) ? undefined : (Object.entries(obj.defaultRequest).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1]?.value }), {})), + 'max': ((obj.max) === undefined) ? undefined : (Object.entries(obj.max).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1]?.value }), {})), + 'maxLimitRequestRatio': ((obj.maxLimitRequestRatio) === undefined) ? undefined : (Object.entries(obj.maxLimitRequestRatio).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1]?.value }), {})), + 'min': ((obj.min) === undefined) ? undefined : (Object.entries(obj.min).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1]?.value }), {})), + 'type': obj.type, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -21091,26 +20336,20 @@ export interface NodeConfigSource { * @schema io.k8s.api.core.v1.NodeConfigSource#configMap */ readonly configMap?: ConfigMapNodeConfigSource; + } /** * Converts an object of type 'NodeConfigSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NodeConfigSource( - obj: NodeConfigSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NodeConfigSource(obj: NodeConfigSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - configMap: toJson_ConfigMapNodeConfigSource(obj.configMap), + 'configMap': toJson_ConfigMapNodeConfigSource(obj.configMap), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -21147,29 +20386,23 @@ export interface Taint { * @schema io.k8s.api.core.v1.Taint#value */ readonly value?: string; + } /** * Converts an object of type 'Taint' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_Taint( - obj: Taint | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_Taint(obj: Taint | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - effect: obj.effect, - key: obj.key, - timeAdded: obj.timeAdded?.toISOString(), - value: obj.value, + 'effect': obj.effect, + 'key': obj.key, + 'timeAdded': obj.timeAdded?.toISOString(), + 'value': obj.value, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -21208,29 +20441,23 @@ export interface AwsElasticBlockStoreVolumeSource { * @schema io.k8s.api.core.v1.AWSElasticBlockStoreVolumeSource#volumeID */ readonly volumeId: string; + } /** * Converts an object of type 'AwsElasticBlockStoreVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_AwsElasticBlockStoreVolumeSource( - obj: AwsElasticBlockStoreVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_AwsElasticBlockStoreVolumeSource(obj: AwsElasticBlockStoreVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsType: obj.fsType, - partition: obj.partition, - readOnly: obj.readOnly, - volumeID: obj.volumeId, + 'fsType': obj.fsType, + 'partition': obj.partition, + 'readOnly': obj.readOnly, + 'volumeID': obj.volumeId, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -21282,31 +20509,25 @@ export interface AzureDiskVolumeSource { * @schema io.k8s.api.core.v1.AzureDiskVolumeSource#readOnly */ readonly readOnly?: boolean; + } /** * Converts an object of type 'AzureDiskVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_AzureDiskVolumeSource( - obj: AzureDiskVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_AzureDiskVolumeSource(obj: AzureDiskVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - cachingMode: obj.cachingMode, - diskName: obj.diskName, - diskURI: obj.diskUri, - fsType: obj.fsType, - kind: obj.kind, - readOnly: obj.readOnly, + 'cachingMode': obj.cachingMode, + 'diskName': obj.diskName, + 'diskURI': obj.diskUri, + 'fsType': obj.fsType, + 'kind': obj.kind, + 'readOnly': obj.readOnly, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -21343,29 +20564,23 @@ export interface AzureFilePersistentVolumeSource { * @schema io.k8s.api.core.v1.AzureFilePersistentVolumeSource#shareName */ readonly shareName: string; + } /** * Converts an object of type 'AzureFilePersistentVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_AzureFilePersistentVolumeSource( - obj: AzureFilePersistentVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_AzureFilePersistentVolumeSource(obj: AzureFilePersistentVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - readOnly: obj.readOnly, - secretName: obj.secretName, - secretNamespace: obj.secretNamespace, - shareName: obj.shareName, + 'readOnly': obj.readOnly, + 'secretName': obj.secretName, + 'secretNamespace': obj.secretNamespace, + 'shareName': obj.shareName, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -21417,31 +20632,25 @@ export interface CephFsPersistentVolumeSource { * @schema io.k8s.api.core.v1.CephFSPersistentVolumeSource#user */ readonly user?: string; + } /** * Converts an object of type 'CephFsPersistentVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CephFsPersistentVolumeSource( - obj: CephFsPersistentVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CephFsPersistentVolumeSource(obj: CephFsPersistentVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - monitors: obj.monitors?.map((y) => y), - path: obj.path, - readOnly: obj.readOnly, - secretFile: obj.secretFile, - secretRef: toJson_SecretReference(obj.secretRef), - user: obj.user, + 'monitors': obj.monitors?.map(y => y), + 'path': obj.path, + 'readOnly': obj.readOnly, + 'secretFile': obj.secretFile, + 'secretRef': toJson_SecretReference(obj.secretRef), + 'user': obj.user, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -21479,29 +20688,23 @@ export interface CinderPersistentVolumeSource { * @schema io.k8s.api.core.v1.CinderPersistentVolumeSource#volumeID */ readonly volumeId: string; + } /** * Converts an object of type 'CinderPersistentVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CinderPersistentVolumeSource( - obj: CinderPersistentVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CinderPersistentVolumeSource(obj: CinderPersistentVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsType: obj.fsType, - readOnly: obj.readOnly, - secretRef: toJson_SecretReference(obj.secretRef), - volumeID: obj.volumeId, + 'fsType': obj.fsType, + 'readOnly': obj.readOnly, + 'secretRef': toJson_SecretReference(obj.secretRef), + 'volumeID': obj.volumeId, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -21540,7 +20743,7 @@ export interface CsiPersistentVolumeSource { readonly fsType?: string; /** - * nodeExpandSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodeExpandVolume call. This is a beta field which is enabled default by CSINodeExpandSecret feature gate. This field is optional, may be omitted if no secret is required. If the secret object contains more than one secret, all secrets are passed. + * nodeExpandSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodeExpandVolume call. This field is optional, may be omitted if no secret is required. If the secret object contains more than one secret, all secrets are passed. * * @schema io.k8s.api.core.v1.CSIPersistentVolumeSource#nodeExpandSecretRef */ @@ -21581,45 +20784,29 @@ export interface CsiPersistentVolumeSource { * @schema io.k8s.api.core.v1.CSIPersistentVolumeSource#volumeHandle */ readonly volumeHandle: string; + } /** * Converts an object of type 'CsiPersistentVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CsiPersistentVolumeSource( - obj: CsiPersistentVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CsiPersistentVolumeSource(obj: CsiPersistentVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - controllerExpandSecretRef: toJson_SecretReference( - obj.controllerExpandSecretRef, - ), - controllerPublishSecretRef: toJson_SecretReference( - obj.controllerPublishSecretRef, - ), - driver: obj.driver, - fsType: obj.fsType, - nodeExpandSecretRef: toJson_SecretReference(obj.nodeExpandSecretRef), - nodePublishSecretRef: toJson_SecretReference(obj.nodePublishSecretRef), - nodeStageSecretRef: toJson_SecretReference(obj.nodeStageSecretRef), - readOnly: obj.readOnly, - volumeAttributes: - obj.volumeAttributes === undefined - ? undefined - : Object.entries(obj.volumeAttributes).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - volumeHandle: obj.volumeHandle, + 'controllerExpandSecretRef': toJson_SecretReference(obj.controllerExpandSecretRef), + 'controllerPublishSecretRef': toJson_SecretReference(obj.controllerPublishSecretRef), + 'driver': obj.driver, + 'fsType': obj.fsType, + 'nodeExpandSecretRef': toJson_SecretReference(obj.nodeExpandSecretRef), + 'nodePublishSecretRef': toJson_SecretReference(obj.nodePublishSecretRef), + 'nodeStageSecretRef': toJson_SecretReference(obj.nodeStageSecretRef), + 'readOnly': obj.readOnly, + 'volumeAttributes': ((obj.volumeAttributes) === undefined) ? undefined : (Object.entries(obj.volumeAttributes).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'volumeHandle': obj.volumeHandle, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -21664,30 +20851,24 @@ export interface FcVolumeSource { * @schema io.k8s.api.core.v1.FCVolumeSource#wwids */ readonly wwids?: string[]; + } /** * Converts an object of type 'FcVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_FcVolumeSource( - obj: FcVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_FcVolumeSource(obj: FcVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsType: obj.fsType, - lun: obj.lun, - readOnly: obj.readOnly, - targetWWNs: obj.targetWwNs?.map((y) => y), - wwids: obj.wwids?.map((y) => y), + 'fsType': obj.fsType, + 'lun': obj.lun, + 'readOnly': obj.readOnly, + 'targetWWNs': obj.targetWwNs?.map(y => y), + 'wwids': obj.wwids?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -21731,36 +20912,24 @@ export interface FlexPersistentVolumeSource { * @schema io.k8s.api.core.v1.FlexPersistentVolumeSource#secretRef */ readonly secretRef?: SecretReference; + } /** * Converts an object of type 'FlexPersistentVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_FlexPersistentVolumeSource( - obj: FlexPersistentVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_FlexPersistentVolumeSource(obj: FlexPersistentVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - driver: obj.driver, - fsType: obj.fsType, - options: - obj.options === undefined - ? undefined - : Object.entries(obj.options).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - readOnly: obj.readOnly, - secretRef: toJson_SecretReference(obj.secretRef), + 'driver': obj.driver, + 'fsType': obj.fsType, + 'options': ((obj.options) === undefined) ? undefined : (Object.entries(obj.options).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'readOnly': obj.readOnly, + 'secretRef': toJson_SecretReference(obj.secretRef), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -21783,27 +20952,21 @@ export interface FlockerVolumeSource { * @schema io.k8s.api.core.v1.FlockerVolumeSource#datasetUUID */ readonly datasetUuid?: string; + } /** * Converts an object of type 'FlockerVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_FlockerVolumeSource( - obj: FlockerVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_FlockerVolumeSource(obj: FlockerVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - datasetName: obj.datasetName, - datasetUUID: obj.datasetUuid, + 'datasetName': obj.datasetName, + 'datasetUUID': obj.datasetUuid, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -21843,29 +21006,23 @@ export interface GcePersistentDiskVolumeSource { * @schema io.k8s.api.core.v1.GCEPersistentDiskVolumeSource#readOnly */ readonly readOnly?: boolean; + } /** * Converts an object of type 'GcePersistentDiskVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_GcePersistentDiskVolumeSource( - obj: GcePersistentDiskVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_GcePersistentDiskVolumeSource(obj: GcePersistentDiskVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsType: obj.fsType, - partition: obj.partition, - pdName: obj.pdName, - readOnly: obj.readOnly, + 'fsType': obj.fsType, + 'partition': obj.partition, + 'pdName': obj.pdName, + 'readOnly': obj.readOnly, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -21903,29 +21060,23 @@ export interface GlusterfsPersistentVolumeSource { * @schema io.k8s.api.core.v1.GlusterfsPersistentVolumeSource#readOnly */ readonly readOnly?: boolean; + } /** * Converts an object of type 'GlusterfsPersistentVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_GlusterfsPersistentVolumeSource( - obj: GlusterfsPersistentVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_GlusterfsPersistentVolumeSource(obj: GlusterfsPersistentVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - endpoints: obj.endpoints, - endpointsNamespace: obj.endpointsNamespace, - path: obj.path, - readOnly: obj.readOnly, + 'endpoints': obj.endpoints, + 'endpointsNamespace': obj.endpointsNamespace, + 'path': obj.path, + 'readOnly': obj.readOnly, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -21949,27 +21100,21 @@ export interface HostPathVolumeSource { * @schema io.k8s.api.core.v1.HostPathVolumeSource#type */ readonly type?: string; + } /** * Converts an object of type 'HostPathVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_HostPathVolumeSource( - obj: HostPathVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_HostPathVolumeSource(obj: HostPathVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - path: obj.path, - type: obj.type, + 'path': obj.path, + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -22057,36 +21202,30 @@ export interface IscsiPersistentVolumeSource { * @schema io.k8s.api.core.v1.ISCSIPersistentVolumeSource#targetPortal */ readonly targetPortal: string; + } /** * Converts an object of type 'IscsiPersistentVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_IscsiPersistentVolumeSource( - obj: IscsiPersistentVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_IscsiPersistentVolumeSource(obj: IscsiPersistentVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - chapAuthDiscovery: obj.chapAuthDiscovery, - chapAuthSession: obj.chapAuthSession, - fsType: obj.fsType, - initiatorName: obj.initiatorName, - iqn: obj.iqn, - iscsiInterface: obj.iscsiInterface, - lun: obj.lun, - portals: obj.portals?.map((y) => y), - readOnly: obj.readOnly, - secretRef: toJson_SecretReference(obj.secretRef), - targetPortal: obj.targetPortal, + 'chapAuthDiscovery': obj.chapAuthDiscovery, + 'chapAuthSession': obj.chapAuthSession, + 'fsType': obj.fsType, + 'initiatorName': obj.initiatorName, + 'iqn': obj.iqn, + 'iscsiInterface': obj.iscsiInterface, + 'lun': obj.lun, + 'portals': obj.portals?.map(y => y), + 'readOnly': obj.readOnly, + 'secretRef': toJson_SecretReference(obj.secretRef), + 'targetPortal': obj.targetPortal, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -22109,27 +21248,21 @@ export interface LocalVolumeSource { * @schema io.k8s.api.core.v1.LocalVolumeSource#path */ readonly path: string; + } /** * Converts an object of type 'LocalVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_LocalVolumeSource( - obj: LocalVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_LocalVolumeSource(obj: LocalVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsType: obj.fsType, - path: obj.path, + 'fsType': obj.fsType, + 'path': obj.path, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -22160,28 +21293,22 @@ export interface NfsVolumeSource { * @schema io.k8s.api.core.v1.NFSVolumeSource#server */ readonly server: string; + } /** * Converts an object of type 'NfsVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NfsVolumeSource( - obj: NfsVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NfsVolumeSource(obj: NfsVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - path: obj.path, - readOnly: obj.readOnly, - server: obj.server, + 'path': obj.path, + 'readOnly': obj.readOnly, + 'server': obj.server, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -22197,26 +21324,20 @@ export interface VolumeNodeAffinity { * @schema io.k8s.api.core.v1.VolumeNodeAffinity#required */ readonly required?: NodeSelector; + } /** * Converts an object of type 'VolumeNodeAffinity' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_VolumeNodeAffinity( - obj: VolumeNodeAffinity | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_VolumeNodeAffinity(obj: VolumeNodeAffinity | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - required: toJson_NodeSelector(obj.required), + 'required': toJson_NodeSelector(obj.required), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -22239,27 +21360,21 @@ export interface PhotonPersistentDiskVolumeSource { * @schema io.k8s.api.core.v1.PhotonPersistentDiskVolumeSource#pdID */ readonly pdId: string; + } /** * Converts an object of type 'PhotonPersistentDiskVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PhotonPersistentDiskVolumeSource( - obj: PhotonPersistentDiskVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PhotonPersistentDiskVolumeSource(obj: PhotonPersistentDiskVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsType: obj.fsType, - pdID: obj.pdId, + 'fsType': obj.fsType, + 'pdID': obj.pdId, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -22289,28 +21404,22 @@ export interface PortworxVolumeSource { * @schema io.k8s.api.core.v1.PortworxVolumeSource#volumeID */ readonly volumeId: string; + } /** * Converts an object of type 'PortworxVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PortworxVolumeSource( - obj: PortworxVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PortworxVolumeSource(obj: PortworxVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsType: obj.fsType, - readOnly: obj.readOnly, - volumeID: obj.volumeId, + 'fsType': obj.fsType, + 'readOnly': obj.readOnly, + 'volumeID': obj.volumeId, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -22364,31 +21473,25 @@ export interface QuobyteVolumeSource { * @schema io.k8s.api.core.v1.QuobyteVolumeSource#volume */ readonly volume: string; + } /** * Converts an object of type 'QuobyteVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_QuobyteVolumeSource( - obj: QuobyteVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_QuobyteVolumeSource(obj: QuobyteVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - group: obj.group, - readOnly: obj.readOnly, - registry: obj.registry, - tenant: obj.tenant, - user: obj.user, - volume: obj.volume, + 'group': obj.group, + 'readOnly': obj.readOnly, + 'registry': obj.registry, + 'tenant': obj.tenant, + 'user': obj.user, + 'volume': obj.volume, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -22458,33 +21561,27 @@ export interface RbdPersistentVolumeSource { * @schema io.k8s.api.core.v1.RBDPersistentVolumeSource#user */ readonly user?: string; + } /** * Converts an object of type 'RbdPersistentVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_RbdPersistentVolumeSource( - obj: RbdPersistentVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_RbdPersistentVolumeSource(obj: RbdPersistentVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsType: obj.fsType, - image: obj.image, - keyring: obj.keyring, - monitors: obj.monitors?.map((y) => y), - pool: obj.pool, - readOnly: obj.readOnly, - secretRef: toJson_SecretReference(obj.secretRef), - user: obj.user, + 'fsType': obj.fsType, + 'image': obj.image, + 'keyring': obj.keyring, + 'monitors': obj.monitors?.map(y => y), + 'pool': obj.pool, + 'readOnly': obj.readOnly, + 'secretRef': toJson_SecretReference(obj.secretRef), + 'user': obj.user, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -22565,35 +21662,29 @@ export interface ScaleIoPersistentVolumeSource { * @schema io.k8s.api.core.v1.ScaleIOPersistentVolumeSource#volumeName */ readonly volumeName?: string; + } /** * Converts an object of type 'ScaleIoPersistentVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ScaleIoPersistentVolumeSource( - obj: ScaleIoPersistentVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ScaleIoPersistentVolumeSource(obj: ScaleIoPersistentVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsType: obj.fsType, - gateway: obj.gateway, - protectionDomain: obj.protectionDomain, - readOnly: obj.readOnly, - secretRef: toJson_SecretReference(obj.secretRef), - sslEnabled: obj.sslEnabled, - storageMode: obj.storageMode, - storagePool: obj.storagePool, - system: obj.system, - volumeName: obj.volumeName, + 'fsType': obj.fsType, + 'gateway': obj.gateway, + 'protectionDomain': obj.protectionDomain, + 'readOnly': obj.readOnly, + 'secretRef': toJson_SecretReference(obj.secretRef), + 'sslEnabled': obj.sslEnabled, + 'storageMode': obj.storageMode, + 'storagePool': obj.storagePool, + 'system': obj.system, + 'volumeName': obj.volumeName, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -22637,30 +21728,24 @@ export interface StorageOsPersistentVolumeSource { * @schema io.k8s.api.core.v1.StorageOSPersistentVolumeSource#volumeNamespace */ readonly volumeNamespace?: string; + } /** * Converts an object of type 'StorageOsPersistentVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_StorageOsPersistentVolumeSource( - obj: StorageOsPersistentVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_StorageOsPersistentVolumeSource(obj: StorageOsPersistentVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsType: obj.fsType, - readOnly: obj.readOnly, - secretRef: toJson_ObjectReference(obj.secretRef), - volumeName: obj.volumeName, - volumeNamespace: obj.volumeNamespace, + 'fsType': obj.fsType, + 'readOnly': obj.readOnly, + 'secretRef': toJson_ObjectReference(obj.secretRef), + 'volumeName': obj.volumeName, + 'volumeNamespace': obj.volumeNamespace, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -22697,29 +21782,23 @@ export interface VsphereVirtualDiskVolumeSource { * @schema io.k8s.api.core.v1.VsphereVirtualDiskVolumeSource#volumePath */ readonly volumePath: string; + } /** * Converts an object of type 'VsphereVirtualDiskVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_VsphereVirtualDiskVolumeSource( - obj: VsphereVirtualDiskVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_VsphereVirtualDiskVolumeSource(obj: VsphereVirtualDiskVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsType: obj.fsType, - storagePolicyID: obj.storagePolicyId, - storagePolicyName: obj.storagePolicyName, - volumePath: obj.volumePath, + 'fsType': obj.fsType, + 'storagePolicyID': obj.storagePolicyId, + 'storagePolicyName': obj.storagePolicyName, + 'volumePath': obj.volumePath, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -22749,28 +21828,22 @@ export interface TypedLocalObjectReference { * @schema io.k8s.api.core.v1.TypedLocalObjectReference#name */ readonly name: string; + } /** * Converts an object of type 'TypedLocalObjectReference' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_TypedLocalObjectReference( - obj: TypedLocalObjectReference | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_TypedLocalObjectReference(obj: TypedLocalObjectReference | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiGroup: obj.apiGroup, - kind: obj.kind, - name: obj.name, + 'apiGroup': obj.apiGroup, + 'kind': obj.kind, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -22805,96 +21878,60 @@ export interface TypedObjectReference { * @schema io.k8s.api.core.v1.TypedObjectReference#namespace */ readonly namespace?: string; + } /** * Converts an object of type 'TypedObjectReference' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_TypedObjectReference( - obj: TypedObjectReference | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_TypedObjectReference(obj: TypedObjectReference | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiGroup: obj.apiGroup, - kind: obj.kind, - name: obj.name, - namespace: obj.namespace, - }; - // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); -} -/* eslint-enable max-len, quote-props */ - -/** - * ResourceRequirements describes the compute resource requirements. - * - * @schema io.k8s.api.core.v1.ResourceRequirements - */ -export interface ResourceRequirements { - /** - * Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - * - * This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - * - * This field is immutable. It can only be set for containers. - * - * @schema io.k8s.api.core.v1.ResourceRequirements#claims - */ - readonly claims?: ResourceClaim[]; + 'apiGroup': obj.apiGroup, + 'kind': obj.kind, + 'name': obj.name, + 'namespace': obj.namespace, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ +/** + * VolumeResourceRequirements describes the storage resource requirements for a volume. + * + * @schema io.k8s.api.core.v1.VolumeResourceRequirements + */ +export interface VolumeResourceRequirements { /** * Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ * - * @schema io.k8s.api.core.v1.ResourceRequirements#limits + * @schema io.k8s.api.core.v1.VolumeResourceRequirements#limits */ readonly limits?: { [key: string]: Quantity }; /** * 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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ * - * @schema io.k8s.api.core.v1.ResourceRequirements#requests + * @schema io.k8s.api.core.v1.VolumeResourceRequirements#requests */ readonly requests?: { [key: string]: Quantity }; + } /** - * Converts an object of type 'ResourceRequirements' to JSON representation. + * Converts an object of type 'VolumeResourceRequirements' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ResourceRequirements( - obj: ResourceRequirements | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_VolumeResourceRequirements(obj: VolumeResourceRequirements | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - claims: obj.claims?.map((y) => toJson_ResourceClaim(y)), - limits: - obj.limits === undefined - ? undefined - : Object.entries(obj.limits).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1]?.value }), - {}, - ), - requests: - obj.requests === undefined - ? undefined - : Object.entries(obj.requests).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1]?.value }), - {}, - ), + 'limits': ((obj.limits) === undefined) ? undefined : (Object.entries(obj.limits).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1]?.value }), {})), + 'requests': ((obj.requests) === undefined) ? undefined : (Object.entries(obj.requests).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1]?.value }), {})), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -22924,28 +21961,22 @@ export interface Affinity { * @schema io.k8s.api.core.v1.Affinity#podAntiAffinity */ readonly podAntiAffinity?: PodAntiAffinity; + } /** * Converts an object of type 'Affinity' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_Affinity( - obj: Affinity | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_Affinity(obj: Affinity | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - nodeAffinity: toJson_NodeAffinity(obj.nodeAffinity), - podAffinity: toJson_PodAffinity(obj.podAffinity), - podAntiAffinity: toJson_PodAntiAffinity(obj.podAntiAffinity), + 'nodeAffinity': toJson_NodeAffinity(obj.nodeAffinity), + 'podAffinity': toJson_PodAffinity(obj.podAffinity), + 'podAntiAffinity': toJson_PodAntiAffinity(obj.podAntiAffinity), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -23047,6 +22078,13 @@ export interface Container { */ readonly resources?: ResourceRequirements; + /** + * RestartPolicy defines the restart behavior of individual containers in a pod. This field may only be set for init containers, and the only allowed value is "Always". For non-init containers or when this field is not specified, the restart behavior is defined by the Pod's restart policy and the container type. Setting the RestartPolicy as "Always" for the init container will have the following effect: this init container will be continually restarted on exit until all regular containers have terminated. Once all regular containers have completed, all init containers with restartPolicy "Always" will be shut down. This lifecycle differs from normal init containers and is often referred to as a "sidecar" container. Although this init container still starts in the init container sequence, it does not wait for the container to complete before proceeding to the next init container. Instead, the next init container starts immediately after this init container is started, or after any startupProbe has successfully completed. + * + * @schema io.k8s.api.core.v1.Container#restartPolicy + */ + readonly restartPolicy?: string; + /** * SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ * @@ -23121,48 +22159,43 @@ export interface Container { * @schema io.k8s.api.core.v1.Container#workingDir */ readonly workingDir?: string; + } /** * Converts an object of type 'Container' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_Container( - obj: Container | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_Container(obj: Container | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - args: obj.args?.map((y) => y), - command: obj.command?.map((y) => y), - env: obj.env?.map((y) => toJson_EnvVar(y)), - envFrom: obj.envFrom?.map((y) => toJson_EnvFromSource(y)), - image: obj.image, - imagePullPolicy: obj.imagePullPolicy, - lifecycle: toJson_Lifecycle(obj.lifecycle), - livenessProbe: toJson_Probe(obj.livenessProbe), - name: obj.name, - ports: obj.ports?.map((y) => toJson_ContainerPort(y)), - readinessProbe: toJson_Probe(obj.readinessProbe), - resizePolicy: obj.resizePolicy?.map((y) => toJson_ContainerResizePolicy(y)), - resources: toJson_ResourceRequirements(obj.resources), - securityContext: toJson_SecurityContext(obj.securityContext), - startupProbe: toJson_Probe(obj.startupProbe), - stdin: obj.stdin, - stdinOnce: obj.stdinOnce, - terminationMessagePath: obj.terminationMessagePath, - terminationMessagePolicy: obj.terminationMessagePolicy, - tty: obj.tty, - volumeDevices: obj.volumeDevices?.map((y) => toJson_VolumeDevice(y)), - volumeMounts: obj.volumeMounts?.map((y) => toJson_VolumeMount(y)), - workingDir: obj.workingDir, + 'args': obj.args?.map(y => y), + 'command': obj.command?.map(y => y), + 'env': obj.env?.map(y => toJson_EnvVar(y)), + 'envFrom': obj.envFrom?.map(y => toJson_EnvFromSource(y)), + 'image': obj.image, + 'imagePullPolicy': obj.imagePullPolicy, + 'lifecycle': toJson_Lifecycle(obj.lifecycle), + 'livenessProbe': toJson_Probe(obj.livenessProbe), + 'name': obj.name, + 'ports': obj.ports?.map(y => toJson_ContainerPort(y)), + 'readinessProbe': toJson_Probe(obj.readinessProbe), + 'resizePolicy': obj.resizePolicy?.map(y => toJson_ContainerResizePolicy(y)), + 'resources': toJson_ResourceRequirements(obj.resources), + 'restartPolicy': obj.restartPolicy, + 'securityContext': toJson_SecurityContext(obj.securityContext), + 'startupProbe': toJson_Probe(obj.startupProbe), + 'stdin': obj.stdin, + 'stdinOnce': obj.stdinOnce, + 'terminationMessagePath': obj.terminationMessagePath, + 'terminationMessagePolicy': obj.terminationMessagePolicy, + 'tty': obj.tty, + 'volumeDevices': obj.volumeDevices?.map(y => toJson_VolumeDevice(y)), + 'volumeMounts': obj.volumeMounts?.map(y => toJson_VolumeMount(y)), + 'workingDir': obj.workingDir, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -23192,28 +22225,22 @@ export interface PodDnsConfig { * @schema io.k8s.api.core.v1.PodDNSConfig#searches */ readonly searches?: string[]; + } /** * Converts an object of type 'PodDnsConfig' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodDnsConfig( - obj: PodDnsConfig | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodDnsConfig(obj: PodDnsConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - nameservers: obj.nameservers?.map((y) => y), - options: obj.options?.map((y) => toJson_PodDnsConfigOption(y)), - searches: obj.searches?.map((y) => y), + 'nameservers': obj.nameservers?.map(y => y), + 'options': obj.options?.map(y => toJson_PodDnsConfigOption(y)), + 'searches': obj.searches?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -23317,6 +22344,13 @@ export interface EphemeralContainer { */ readonly resources?: ResourceRequirements; + /** + * Restart policy for the container to manage the restart behavior of each container within a pod. This may only be set for init containers. You cannot set this field on ephemeral containers. + * + * @schema io.k8s.api.core.v1.EphemeralContainer#restartPolicy + */ + readonly restartPolicy?: string; + /** * Optional: SecurityContext defines the security options the ephemeral container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. * @@ -23400,49 +22434,44 @@ export interface EphemeralContainer { * @schema io.k8s.api.core.v1.EphemeralContainer#workingDir */ readonly workingDir?: string; + } /** * Converts an object of type 'EphemeralContainer' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_EphemeralContainer( - obj: EphemeralContainer | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_EphemeralContainer(obj: EphemeralContainer | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - args: obj.args?.map((y) => y), - command: obj.command?.map((y) => y), - env: obj.env?.map((y) => toJson_EnvVar(y)), - envFrom: obj.envFrom?.map((y) => toJson_EnvFromSource(y)), - image: obj.image, - imagePullPolicy: obj.imagePullPolicy, - lifecycle: toJson_Lifecycle(obj.lifecycle), - livenessProbe: toJson_Probe(obj.livenessProbe), - name: obj.name, - ports: obj.ports?.map((y) => toJson_ContainerPort(y)), - readinessProbe: toJson_Probe(obj.readinessProbe), - resizePolicy: obj.resizePolicy?.map((y) => toJson_ContainerResizePolicy(y)), - resources: toJson_ResourceRequirements(obj.resources), - securityContext: toJson_SecurityContext(obj.securityContext), - startupProbe: toJson_Probe(obj.startupProbe), - stdin: obj.stdin, - stdinOnce: obj.stdinOnce, - targetContainerName: obj.targetContainerName, - terminationMessagePath: obj.terminationMessagePath, - terminationMessagePolicy: obj.terminationMessagePolicy, - tty: obj.tty, - volumeDevices: obj.volumeDevices?.map((y) => toJson_VolumeDevice(y)), - volumeMounts: obj.volumeMounts?.map((y) => toJson_VolumeMount(y)), - workingDir: obj.workingDir, + 'args': obj.args?.map(y => y), + 'command': obj.command?.map(y => y), + 'env': obj.env?.map(y => toJson_EnvVar(y)), + 'envFrom': obj.envFrom?.map(y => toJson_EnvFromSource(y)), + 'image': obj.image, + 'imagePullPolicy': obj.imagePullPolicy, + 'lifecycle': toJson_Lifecycle(obj.lifecycle), + 'livenessProbe': toJson_Probe(obj.livenessProbe), + 'name': obj.name, + 'ports': obj.ports?.map(y => toJson_ContainerPort(y)), + 'readinessProbe': toJson_Probe(obj.readinessProbe), + 'resizePolicy': obj.resizePolicy?.map(y => toJson_ContainerResizePolicy(y)), + 'resources': toJson_ResourceRequirements(obj.resources), + 'restartPolicy': obj.restartPolicy, + 'securityContext': toJson_SecurityContext(obj.securityContext), + 'startupProbe': toJson_Probe(obj.startupProbe), + 'stdin': obj.stdin, + 'stdinOnce': obj.stdinOnce, + 'targetContainerName': obj.targetContainerName, + 'terminationMessagePath': obj.terminationMessagePath, + 'terminationMessagePolicy': obj.terminationMessagePolicy, + 'tty': obj.tty, + 'volumeDevices': obj.volumeDevices?.map(y => toJson_VolumeDevice(y)), + 'volumeMounts': obj.volumeMounts?.map(y => toJson_VolumeMount(y)), + 'workingDir': obj.workingDir, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -23465,27 +22494,21 @@ export interface HostAlias { * @schema io.k8s.api.core.v1.HostAlias#ip */ readonly ip?: string; + } /** * Converts an object of type 'HostAlias' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_HostAlias( - obj: HostAlias | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_HostAlias(obj: HostAlias | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - hostnames: obj.hostnames?.map((y) => y), - ip: obj.ip, + 'hostnames': obj.hostnames?.map(y => y), + 'ip': obj.ip, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -23501,26 +22524,20 @@ export interface PodOs { * @schema io.k8s.api.core.v1.PodOS#name */ readonly name: string; + } /** * Converts an object of type 'PodOs' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodOs( - obj: PodOs | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodOs(obj: PodOs | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -23536,26 +22553,20 @@ export interface PodReadinessGate { * @schema io.k8s.api.core.v1.PodReadinessGate#conditionType */ readonly conditionType: string; + } /** * Converts an object of type 'PodReadinessGate' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodReadinessGate( - obj: PodReadinessGate | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodReadinessGate(obj: PodReadinessGate | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - conditionType: obj.conditionType, + 'conditionType': obj.conditionType, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -23578,27 +22589,21 @@ export interface PodResourceClaim { * @schema io.k8s.api.core.v1.PodResourceClaim#source */ readonly source?: ClaimSource; + } /** * Converts an object of type 'PodResourceClaim' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodResourceClaim( - obj: PodResourceClaim | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodResourceClaim(obj: PodResourceClaim | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, - source: toJson_ClaimSource(obj.source), + 'name': obj.name, + 'source': toJson_ClaimSource(obj.source), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -23614,26 +22619,20 @@ export interface PodSchedulingGate { * @schema io.k8s.api.core.v1.PodSchedulingGate#name */ readonly name: string; + } /** * Converts an object of type 'PodSchedulingGate' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodSchedulingGate( - obj: PodSchedulingGate | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodSchedulingGate(obj: PodSchedulingGate | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -23717,35 +22716,29 @@ export interface PodSecurityContext { * @schema io.k8s.api.core.v1.PodSecurityContext#windowsOptions */ readonly windowsOptions?: WindowsSecurityContextOptions; + } /** * Converts an object of type 'PodSecurityContext' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodSecurityContext( - obj: PodSecurityContext | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodSecurityContext(obj: PodSecurityContext | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsGroup: obj.fsGroup, - fsGroupChangePolicy: obj.fsGroupChangePolicy, - runAsGroup: obj.runAsGroup, - runAsNonRoot: obj.runAsNonRoot, - runAsUser: obj.runAsUser, - seLinuxOptions: toJson_SeLinuxOptions(obj.seLinuxOptions), - seccompProfile: toJson_SeccompProfile(obj.seccompProfile), - supplementalGroups: obj.supplementalGroups?.map((y) => y), - sysctls: obj.sysctls?.map((y) => toJson_Sysctl(y)), - windowsOptions: toJson_WindowsSecurityContextOptions(obj.windowsOptions), + 'fsGroup': obj.fsGroup, + 'fsGroupChangePolicy': obj.fsGroupChangePolicy, + 'runAsGroup': obj.runAsGroup, + 'runAsNonRoot': obj.runAsNonRoot, + 'runAsUser': obj.runAsUser, + 'seLinuxOptions': toJson_SeLinuxOptions(obj.seLinuxOptions), + 'seccompProfile': toJson_SeccompProfile(obj.seccompProfile), + 'supplementalGroups': obj.supplementalGroups?.map(y => y), + 'sysctls': obj.sysctls?.map(y => toJson_Sysctl(y)), + 'windowsOptions': toJson_WindowsSecurityContextOptions(obj.windowsOptions), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -23790,30 +22783,24 @@ export interface Toleration { * @schema io.k8s.api.core.v1.Toleration#value */ readonly value?: string; + } /** * Converts an object of type 'Toleration' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_Toleration( - obj: Toleration | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_Toleration(obj: Toleration | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - effect: obj.effect, - key: obj.key, - operator: obj.operator, - tolerationSeconds: obj.tolerationSeconds, - value: obj.value, + 'effect': obj.effect, + 'key': obj.key, + 'operator': obj.operator, + 'tolerationSeconds': obj.tolerationSeconds, + 'value': obj.value, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -23891,33 +22878,27 @@ export interface TopologySpreadConstraint { * @schema io.k8s.api.core.v1.TopologySpreadConstraint#whenUnsatisfiable */ readonly whenUnsatisfiable: string; + } /** * Converts an object of type 'TopologySpreadConstraint' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_TopologySpreadConstraint( - obj: TopologySpreadConstraint | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_TopologySpreadConstraint(obj: TopologySpreadConstraint | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - labelSelector: toJson_LabelSelector(obj.labelSelector), - matchLabelKeys: obj.matchLabelKeys?.map((y) => y), - maxSkew: obj.maxSkew, - minDomains: obj.minDomains, - nodeAffinityPolicy: obj.nodeAffinityPolicy, - nodeTaintsPolicy: obj.nodeTaintsPolicy, - topologyKey: obj.topologyKey, - whenUnsatisfiable: obj.whenUnsatisfiable, + 'labelSelector': toJson_LabelSelector(obj.labelSelector), + 'matchLabelKeys': obj.matchLabelKeys?.map(y => y), + 'maxSkew': obj.maxSkew, + 'minDomains': obj.minDomains, + 'nodeAffinityPolicy': obj.nodeAffinityPolicy, + 'nodeTaintsPolicy': obj.nodeTaintsPolicy, + 'topologyKey': obj.topologyKey, + 'whenUnsatisfiable': obj.whenUnsatisfiable, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -24149,63 +23130,49 @@ export interface Volume { * @schema io.k8s.api.core.v1.Volume#vsphereVolume */ readonly vsphereVolume?: VsphereVirtualDiskVolumeSource; + } /** * Converts an object of type 'Volume' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_Volume( - obj: Volume | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } - const result = { - awsElasticBlockStore: toJson_AwsElasticBlockStoreVolumeSource( - obj.awsElasticBlockStore, - ), - azureDisk: toJson_AzureDiskVolumeSource(obj.azureDisk), - azureFile: toJson_AzureFileVolumeSource(obj.azureFile), - cephfs: toJson_CephFsVolumeSource(obj.cephfs), - cinder: toJson_CinderVolumeSource(obj.cinder), - configMap: toJson_ConfigMapVolumeSource(obj.configMap), - csi: toJson_CsiVolumeSource(obj.csi), - downwardAPI: toJson_DownwardApiVolumeSource(obj.downwardApi), - emptyDir: toJson_EmptyDirVolumeSource(obj.emptyDir), - ephemeral: toJson_EphemeralVolumeSource(obj.ephemeral), - fc: toJson_FcVolumeSource(obj.fc), - flexVolume: toJson_FlexVolumeSource(obj.flexVolume), - flocker: toJson_FlockerVolumeSource(obj.flocker), - gcePersistentDisk: toJson_GcePersistentDiskVolumeSource( - obj.gcePersistentDisk, - ), - gitRepo: toJson_GitRepoVolumeSource(obj.gitRepo), - glusterfs: toJson_GlusterfsVolumeSource(obj.glusterfs), - hostPath: toJson_HostPathVolumeSource(obj.hostPath), - iscsi: toJson_IscsiVolumeSource(obj.iscsi), - name: obj.name, - nfs: toJson_NfsVolumeSource(obj.nfs), - persistentVolumeClaim: toJson_PersistentVolumeClaimVolumeSource( - obj.persistentVolumeClaim, - ), - photonPersistentDisk: toJson_PhotonPersistentDiskVolumeSource( - obj.photonPersistentDisk, - ), - portworxVolume: toJson_PortworxVolumeSource(obj.portworxVolume), - projected: toJson_ProjectedVolumeSource(obj.projected), - quobyte: toJson_QuobyteVolumeSource(obj.quobyte), - rbd: toJson_RbdVolumeSource(obj.rbd), - scaleIO: toJson_ScaleIoVolumeSource(obj.scaleIo), - secret: toJson_SecretVolumeSource(obj.secret), - storageos: toJson_StorageOsVolumeSource(obj.storageos), - vsphereVolume: toJson_VsphereVirtualDiskVolumeSource(obj.vsphereVolume), - }; - // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); +export function toJson_Volume(obj: Volume | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'awsElasticBlockStore': toJson_AwsElasticBlockStoreVolumeSource(obj.awsElasticBlockStore), + 'azureDisk': toJson_AzureDiskVolumeSource(obj.azureDisk), + 'azureFile': toJson_AzureFileVolumeSource(obj.azureFile), + 'cephfs': toJson_CephFsVolumeSource(obj.cephfs), + 'cinder': toJson_CinderVolumeSource(obj.cinder), + 'configMap': toJson_ConfigMapVolumeSource(obj.configMap), + 'csi': toJson_CsiVolumeSource(obj.csi), + 'downwardAPI': toJson_DownwardApiVolumeSource(obj.downwardApi), + 'emptyDir': toJson_EmptyDirVolumeSource(obj.emptyDir), + 'ephemeral': toJson_EphemeralVolumeSource(obj.ephemeral), + 'fc': toJson_FcVolumeSource(obj.fc), + 'flexVolume': toJson_FlexVolumeSource(obj.flexVolume), + 'flocker': toJson_FlockerVolumeSource(obj.flocker), + 'gcePersistentDisk': toJson_GcePersistentDiskVolumeSource(obj.gcePersistentDisk), + 'gitRepo': toJson_GitRepoVolumeSource(obj.gitRepo), + 'glusterfs': toJson_GlusterfsVolumeSource(obj.glusterfs), + 'hostPath': toJson_HostPathVolumeSource(obj.hostPath), + 'iscsi': toJson_IscsiVolumeSource(obj.iscsi), + 'name': obj.name, + 'nfs': toJson_NfsVolumeSource(obj.nfs), + 'persistentVolumeClaim': toJson_PersistentVolumeClaimVolumeSource(obj.persistentVolumeClaim), + 'photonPersistentDisk': toJson_PhotonPersistentDiskVolumeSource(obj.photonPersistentDisk), + 'portworxVolume': toJson_PortworxVolumeSource(obj.portworxVolume), + 'projected': toJson_ProjectedVolumeSource(obj.projected), + 'quobyte': toJson_QuobyteVolumeSource(obj.quobyte), + 'rbd': toJson_RbdVolumeSource(obj.rbd), + 'scaleIO': toJson_ScaleIoVolumeSource(obj.scaleIo), + 'secret': toJson_SecretVolumeSource(obj.secret), + 'storageos': toJson_StorageOsVolumeSource(obj.storageos), + 'vsphereVolume': toJson_VsphereVirtualDiskVolumeSource(obj.vsphereVolume), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -24221,28 +23188,20 @@ export interface ScopeSelector { * @schema io.k8s.api.core.v1.ScopeSelector#matchExpressions */ readonly matchExpressions?: ScopedResourceSelectorRequirement[]; + } /** * Converts an object of type 'ScopeSelector' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ScopeSelector( - obj: ScopeSelector | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ScopeSelector(obj: ScopeSelector | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - matchExpressions: obj.matchExpressions?.map((y) => - toJson_ScopedResourceSelectorRequirement(y), - ), + 'matchExpressions': obj.matchExpressions?.map(y => toJson_ScopedResourceSelectorRequirement(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -24253,7 +23212,16 @@ export function toJson_ScopeSelector( */ export interface ServicePort { /** - * The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol. + * The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either: + * + * * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). + * + * * Kubernetes-defined prefixed names: + * * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- + * * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 + * * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 + * + * * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol. * * @schema io.k8s.api.core.v1.ServicePort#appProtocol */ @@ -24294,31 +23262,25 @@ export interface ServicePort { * @schema io.k8s.api.core.v1.ServicePort#targetPort */ readonly targetPort?: IntOrString; + } /** * Converts an object of type 'ServicePort' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ServicePort( - obj: ServicePort | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ServicePort(obj: ServicePort | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - appProtocol: obj.appProtocol, - name: obj.name, - nodePort: obj.nodePort, - port: obj.port, - protocol: obj.protocol, - targetPort: obj.targetPort?.value, + 'appProtocol': obj.appProtocol, + 'name': obj.name, + 'nodePort': obj.nodePort, + 'port': obj.port, + 'protocol': obj.protocol, + 'targetPort': obj.targetPort?.value, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -24334,26 +23296,20 @@ export interface SessionAffinityConfig { * @schema io.k8s.api.core.v1.SessionAffinityConfig#clientIP */ readonly clientIp?: ClientIpConfig; + } /** * Converts an object of type 'SessionAffinityConfig' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_SessionAffinityConfig( - obj: SessionAffinityConfig | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_SessionAffinityConfig(obj: SessionAffinityConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - clientIP: toJson_ClientIpConfig(obj.clientIp), + 'clientIP': toJson_ClientIpConfig(obj.clientIp), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -24383,28 +23339,22 @@ export interface EndpointConditions { * @schema io.k8s.api.discovery.v1.EndpointConditions#terminating */ readonly terminating?: boolean; + } /** * Converts an object of type 'EndpointConditions' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_EndpointConditions( - obj: EndpointConditions | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_EndpointConditions(obj: EndpointConditions | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - ready: obj.ready, - serving: obj.serving, - terminating: obj.terminating, + 'ready': obj.ready, + 'serving': obj.serving, + 'terminating': obj.terminating, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -24420,173 +23370,177 @@ export interface EndpointHints { * @schema io.k8s.api.discovery.v1.EndpointHints#forZones */ readonly forZones?: ForZone[]; + } /** * Converts an object of type 'EndpointHints' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_EndpointHints( - obj: EndpointHints | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_EndpointHints(obj: EndpointHints | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - forZones: obj.forZones?.map((y) => toJson_ForZone(y)), + 'forZones': obj.forZones?.map(y => toJson_ForZone(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * FlowDistinguisherMethod specifies the method of a flow distinguisher. * - * @schema io.k8s.api.flowcontrol.v1beta2.FlowDistinguisherMethod + * @schema io.k8s.api.flowcontrol.v1.FlowDistinguisherMethod */ -export interface FlowDistinguisherMethodV1Beta2 { +export interface FlowDistinguisherMethod { /** * `type` is the type of flow distinguisher method The supported types are "ByUser" and "ByNamespace". Required. * - * @schema io.k8s.api.flowcontrol.v1beta2.FlowDistinguisherMethod#type + * @schema io.k8s.api.flowcontrol.v1.FlowDistinguisherMethod#type */ readonly type: string; + } /** - * Converts an object of type 'FlowDistinguisherMethodV1Beta2' to JSON representation. + * Converts an object of type 'FlowDistinguisherMethod' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_FlowDistinguisherMethodV1Beta2( - obj: FlowDistinguisherMethodV1Beta2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_FlowDistinguisherMethod(obj: FlowDistinguisherMethod | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - type: obj.type, + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * PriorityLevelConfigurationReference contains information that points to the "request-priority" being used. * - * @schema io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationReference + * @schema io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationReference */ -export interface PriorityLevelConfigurationReferenceV1Beta2 { +export interface PriorityLevelConfigurationReference { /** * `name` is the name of the priority level configuration being referenced Required. * - * @schema io.k8s.api.flowcontrol.v1beta2.PriorityLevelConfigurationReference#name + * @schema io.k8s.api.flowcontrol.v1.PriorityLevelConfigurationReference#name */ readonly name: string; + } /** - * Converts an object of type 'PriorityLevelConfigurationReferenceV1Beta2' to JSON representation. + * Converts an object of type 'PriorityLevelConfigurationReference' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PriorityLevelConfigurationReferenceV1Beta2( - obj: PriorityLevelConfigurationReferenceV1Beta2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PriorityLevelConfigurationReference(obj: PriorityLevelConfigurationReference | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * PolicyRulesWithSubjects prescribes a test that applies to a request to an apiserver. The test considers the subject making the request, the verb being requested, and the resource to be acted upon. This PolicyRulesWithSubjects matches a request if and only if both (a) at least one member of subjects matches the request and (b) at least one member of resourceRules or nonResourceRules matches the request. * - * @schema io.k8s.api.flowcontrol.v1beta2.PolicyRulesWithSubjects + * @schema io.k8s.api.flowcontrol.v1.PolicyRulesWithSubjects */ -export interface PolicyRulesWithSubjectsV1Beta2 { +export interface PolicyRulesWithSubjects { /** * `nonResourceRules` is a list of NonResourcePolicyRules that identify matching requests according to their verb and the target non-resource URL. * - * @schema io.k8s.api.flowcontrol.v1beta2.PolicyRulesWithSubjects#nonResourceRules + * @schema io.k8s.api.flowcontrol.v1.PolicyRulesWithSubjects#nonResourceRules */ - readonly nonResourceRules?: NonResourcePolicyRuleV1Beta2[]; + readonly nonResourceRules?: NonResourcePolicyRule[]; /** * `resourceRules` is a slice of ResourcePolicyRules that identify matching requests according to their verb and the target resource. At least one of `resourceRules` and `nonResourceRules` has to be non-empty. * - * @schema io.k8s.api.flowcontrol.v1beta2.PolicyRulesWithSubjects#resourceRules + * @schema io.k8s.api.flowcontrol.v1.PolicyRulesWithSubjects#resourceRules */ - readonly resourceRules?: ResourcePolicyRuleV1Beta2[]; + readonly resourceRules?: ResourcePolicyRule[]; /** * subjects is the list of normal user, serviceaccount, or group that this rule cares about. There must be at least one member in this slice. A slice that includes both the system:authenticated and system:unauthenticated user groups matches every request. Required. * - * @schema io.k8s.api.flowcontrol.v1beta2.PolicyRulesWithSubjects#subjects + * @schema io.k8s.api.flowcontrol.v1.PolicyRulesWithSubjects#subjects */ - readonly subjects: SubjectV1Beta2[]; + readonly subjects: Subject[]; + } /** - * Converts an object of type 'PolicyRulesWithSubjectsV1Beta2' to JSON representation. + * Converts an object of type 'PolicyRulesWithSubjects' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PolicyRulesWithSubjectsV1Beta2( - obj: PolicyRulesWithSubjectsV1Beta2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PolicyRulesWithSubjects(obj: PolicyRulesWithSubjects | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - nonResourceRules: obj.nonResourceRules?.map((y) => - toJson_NonResourcePolicyRuleV1Beta2(y), - ), - resourceRules: obj.resourceRules?.map((y) => - toJson_ResourcePolicyRuleV1Beta2(y), - ), - subjects: obj.subjects?.map((y) => toJson_SubjectV1Beta2(y)), + 'nonResourceRules': obj.nonResourceRules?.map(y => toJson_NonResourcePolicyRule(y)), + 'resourceRules': obj.resourceRules?.map(y => toJson_ResourcePolicyRule(y)), + 'subjects': obj.subjects?.map(y => toJson_Subject(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** - * LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. It addresses two issues: - * - How are requests for this priority level limited? - * - What should be done with requests that exceed the limit? + * ExemptPriorityLevelConfiguration describes the configurable aspects of the handling of exempt requests. In the mandatory exempt configuration object the values in the fields here can be modified by authorized users, unlike the rest of the `spec`. * - * @schema io.k8s.api.flowcontrol.v1beta2.LimitedPriorityLevelConfiguration + * @schema io.k8s.api.flowcontrol.v1.ExemptPriorityLevelConfiguration */ -export interface LimitedPriorityLevelConfigurationV1Beta2 { +export interface ExemptPriorityLevelConfiguration { + /** + * `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. This value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. + * + * LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) + * + * @schema io.k8s.api.flowcontrol.v1.ExemptPriorityLevelConfiguration#lendablePercent + */ + readonly lendablePercent?: number; + /** - * `assuredConcurrencyShares` (ACS) configures the execution limit, which is a limit on the number of requests of this priority level that may be exeucting at a given time. ACS must be a positive number. The server's concurrency limit (SCL) is divided among the concurrency-controlled priority levels in proportion to their assured concurrency shares. This produces the assured concurrency value (ACV) --- the number of requests that may be executing at a time --- for each such priority level: + * `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats nominally reserved for this priority level. This DOES NOT limit the dispatching from this priority level but affects the other priority levels through the borrowing mechanism. The server's concurrency limit (ServerCL) is divided among all the priority levels in proportion to their NCS values: * - * ACV(l) = ceil( SCL * ACS(l) / ( sum[priority levels k] ACS(k) ) ) + * NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) * - * bigger numbers of ACS mean more reserved concurrent requests (at the expense of every other PL). This field has a default value of 30. + * Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of zero. * - * @schema io.k8s.api.flowcontrol.v1beta2.LimitedPriorityLevelConfiguration#assuredConcurrencyShares + * @schema io.k8s.api.flowcontrol.v1.ExemptPriorityLevelConfiguration#nominalConcurrencyShares */ - readonly assuredConcurrencyShares?: number; + readonly nominalConcurrencyShares?: number; + +} + +/** + * Converts an object of type 'ExemptPriorityLevelConfiguration' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExemptPriorityLevelConfiguration(obj: ExemptPriorityLevelConfiguration | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'lendablePercent': obj.lendablePercent, + 'nominalConcurrencyShares': obj.nominalConcurrencyShares, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ +/** + * LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. It addresses two issues: + * - How are requests for this priority level limited? + * - What should be done with requests that exceed the limit? + * + * @schema io.k8s.api.flowcontrol.v1.LimitedPriorityLevelConfiguration + */ +export interface LimitedPriorityLevelConfiguration { /** * `borrowingLimitPercent`, if present, configures a limit on how many seats this priority level can borrow from other priority levels. The limit is known as this level's BorrowingConcurrencyLimit (BorrowingCL) and is a limit on the total number of seats that this level may borrow at any one time. This field holds the ratio of that limit to the level's nominal concurrency limit. When this field is non-nil, it must hold a non-negative integer and the limit is calculated as follows. * @@ -24594,7 +23548,7 @@ export interface LimitedPriorityLevelConfigurationV1Beta2 { * * The value of this field can be more than 100, implying that this priority level can borrow a number of seats that is greater than its own nominal concurrency limit (NominalCL). When this field is left `nil`, the limit is effectively infinite. * - * @schema io.k8s.api.flowcontrol.v1beta2.LimitedPriorityLevelConfiguration#borrowingLimitPercent + * @schema io.k8s.api.flowcontrol.v1.LimitedPriorityLevelConfiguration#borrowingLimitPercent */ readonly borrowingLimitPercent?: number; @@ -24603,39 +23557,48 @@ export interface LimitedPriorityLevelConfigurationV1Beta2 { * * LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) * - * @schema io.k8s.api.flowcontrol.v1beta2.LimitedPriorityLevelConfiguration#lendablePercent + * @schema io.k8s.api.flowcontrol.v1.LimitedPriorityLevelConfiguration#lendablePercent */ readonly lendablePercent?: number; /** * `limitResponse` indicates what to do with requests that can not be executed right now * - * @schema io.k8s.api.flowcontrol.v1beta2.LimitedPriorityLevelConfiguration#limitResponse + * @schema io.k8s.api.flowcontrol.v1.LimitedPriorityLevelConfiguration#limitResponse + */ + readonly limitResponse?: LimitResponse; + + /** + * `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats available at this priority level. This is used both for requests dispatched from this priority level as well as requests dispatched from other priority levels borrowing seats from this level. The server's concurrency limit (ServerCL) is divided among the Limited priority levels in proportion to their NCS values: + * + * NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) + * + * Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. + * + * If not specified, this field defaults to a value of 30. + * + * Setting this field to zero supports the construction of a "jail" for this priority level that is used to hold some request(s) + * + * @schema io.k8s.api.flowcontrol.v1.LimitedPriorityLevelConfiguration#nominalConcurrencyShares */ - readonly limitResponse?: LimitResponseV1Beta2; + readonly nominalConcurrencyShares?: number; + } /** - * Converts an object of type 'LimitedPriorityLevelConfigurationV1Beta2' to JSON representation. + * Converts an object of type 'LimitedPriorityLevelConfiguration' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_LimitedPriorityLevelConfigurationV1Beta2( - obj: LimitedPriorityLevelConfigurationV1Beta2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_LimitedPriorityLevelConfiguration(obj: LimitedPriorityLevelConfiguration | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - assuredConcurrencyShares: obj.assuredConcurrencyShares, - borrowingLimitPercent: obj.borrowingLimitPercent, - lendablePercent: obj.lendablePercent, - limitResponse: toJson_LimitResponseV1Beta2(obj.limitResponse), + 'borrowingLimitPercent': obj.borrowingLimitPercent, + 'lendablePercent': obj.lendablePercent, + 'limitResponse': toJson_LimitResponse(obj.limitResponse), + 'nominalConcurrencyShares': obj.nominalConcurrencyShares, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -24651,26 +23614,20 @@ export interface FlowDistinguisherMethodV1Beta3 { * @schema io.k8s.api.flowcontrol.v1beta3.FlowDistinguisherMethod#type */ readonly type: string; + } /** * Converts an object of type 'FlowDistinguisherMethodV1Beta3' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_FlowDistinguisherMethodV1Beta3( - obj: FlowDistinguisherMethodV1Beta3 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_FlowDistinguisherMethodV1Beta3(obj: FlowDistinguisherMethodV1Beta3 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - type: obj.type, + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -24686,26 +23643,20 @@ export interface PriorityLevelConfigurationReferenceV1Beta3 { * @schema io.k8s.api.flowcontrol.v1beta3.PriorityLevelConfigurationReference#name */ readonly name: string; + } /** * Converts an object of type 'PriorityLevelConfigurationReferenceV1Beta3' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PriorityLevelConfigurationReferenceV1Beta3( - obj: PriorityLevelConfigurationReferenceV1Beta3 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PriorityLevelConfigurationReferenceV1Beta3(obj: PriorityLevelConfigurationReferenceV1Beta3 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -24735,32 +23686,65 @@ export interface PolicyRulesWithSubjectsV1Beta3 { * @schema io.k8s.api.flowcontrol.v1beta3.PolicyRulesWithSubjects#subjects */ readonly subjects: SubjectV1Beta3[]; + } /** * Converts an object of type 'PolicyRulesWithSubjectsV1Beta3' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PolicyRulesWithSubjectsV1Beta3( - obj: PolicyRulesWithSubjectsV1Beta3 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PolicyRulesWithSubjectsV1Beta3(obj: PolicyRulesWithSubjectsV1Beta3 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'nonResourceRules': obj.nonResourceRules?.map(y => toJson_NonResourcePolicyRuleV1Beta3(y)), + 'resourceRules': obj.resourceRules?.map(y => toJson_ResourcePolicyRuleV1Beta3(y)), + 'subjects': obj.subjects?.map(y => toJson_SubjectV1Beta3(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ExemptPriorityLevelConfiguration describes the configurable aspects of the handling of exempt requests. In the mandatory exempt configuration object the values in the fields here can be modified by authorized users, unlike the rest of the `spec`. + * + * @schema io.k8s.api.flowcontrol.v1beta3.ExemptPriorityLevelConfiguration + */ +export interface ExemptPriorityLevelConfigurationV1Beta3 { + /** + * `lendablePercent` prescribes the fraction of the level's NominalCL that can be borrowed by other priority levels. This value of this field must be between 0 and 100, inclusive, and it defaults to 0. The number of seats that other levels can borrow from this level, known as this level's LendableConcurrencyLimit (LendableCL), is defined as follows. + * + * LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 ) + * + * @schema io.k8s.api.flowcontrol.v1beta3.ExemptPriorityLevelConfiguration#lendablePercent + */ + readonly lendablePercent?: number; + + /** + * `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats nominally reserved for this priority level. This DOES NOT limit the dispatching from this priority level but affects the other priority levels through the borrowing mechanism. The server's concurrency limit (ServerCL) is divided among all the priority levels in proportion to their NCS values: + * + * NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) + * + * Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of zero. + * + * @schema io.k8s.api.flowcontrol.v1beta3.ExemptPriorityLevelConfiguration#nominalConcurrencyShares + */ + readonly nominalConcurrencyShares?: number; + +} + +/** + * Converts an object of type 'ExemptPriorityLevelConfigurationV1Beta3' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ExemptPriorityLevelConfigurationV1Beta3(obj: ExemptPriorityLevelConfigurationV1Beta3 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - nonResourceRules: obj.nonResourceRules?.map((y) => - toJson_NonResourcePolicyRuleV1Beta3(y), - ), - resourceRules: obj.resourceRules?.map((y) => - toJson_ResourcePolicyRuleV1Beta3(y), - ), - subjects: obj.subjects?.map((y) => toJson_SubjectV1Beta3(y)), + 'lendablePercent': obj.lendablePercent, + 'nominalConcurrencyShares': obj.nominalConcurrencyShares, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -24802,36 +23786,30 @@ export interface LimitedPriorityLevelConfigurationV1Beta3 { /** * `nominalConcurrencyShares` (NCS) contributes to the computation of the NominalConcurrencyLimit (NominalCL) of this level. This is the number of execution seats available at this priority level. This is used both for requests dispatched from this priority level as well as requests dispatched from other priority levels borrowing seats from this level. The server's concurrency limit (ServerCL) is divided among the Limited priority levels in proportion to their NCS values: * - * NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[limited priority level k] NCS(k) + * NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k) * - * Bigger numbers mean a larger nominal concurrency limit, at the expense of every other Limited priority level. This field has a default value of 30. + * Bigger numbers mean a larger nominal concurrency limit, at the expense of every other priority level. This field has a default value of 30. * * @schema io.k8s.api.flowcontrol.v1beta3.LimitedPriorityLevelConfiguration#nominalConcurrencyShares */ readonly nominalConcurrencyShares?: number; + } /** * Converts an object of type 'LimitedPriorityLevelConfigurationV1Beta3' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_LimitedPriorityLevelConfigurationV1Beta3( - obj: LimitedPriorityLevelConfigurationV1Beta3 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_LimitedPriorityLevelConfigurationV1Beta3(obj: LimitedPriorityLevelConfigurationV1Beta3 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - borrowingLimitPercent: obj.borrowingLimitPercent, - lendablePercent: obj.lendablePercent, - limitResponse: toJson_LimitResponseV1Beta3(obj.limitResponse), - nominalConcurrencyShares: obj.nominalConcurrencyShares, + 'borrowingLimitPercent': obj.borrowingLimitPercent, + 'lendablePercent': obj.lendablePercent, + 'limitResponse': toJson_LimitResponseV1Beta3(obj.limitResponse), + 'nominalConcurrencyShares': obj.nominalConcurrencyShares, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -24854,27 +23832,21 @@ export interface IngressBackend { * @schema io.k8s.api.networking.v1.IngressBackend#service */ readonly service?: IngressServiceBackend; + } /** * Converts an object of type 'IngressBackend' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_IngressBackend( - obj: IngressBackend | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_IngressBackend(obj: IngressBackend | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - resource: toJson_TypedLocalObjectReference(obj.resource), - service: toJson_IngressServiceBackend(obj.service), + 'resource': toJson_TypedLocalObjectReference(obj.resource), + 'service': toJson_IngressServiceBackend(obj.service), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -24902,27 +23874,21 @@ export interface IngressRule { * @schema io.k8s.api.networking.v1.IngressRule#http */ readonly http?: HttpIngressRuleValue; + } /** * Converts an object of type 'IngressRule' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_IngressRule( - obj: IngressRule | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_IngressRule(obj: IngressRule | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - host: obj.host, - http: toJson_HttpIngressRuleValue(obj.http), + 'host': obj.host, + 'http': toJson_HttpIngressRuleValue(obj.http), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -24946,27 +23912,21 @@ export interface IngressTls { * @schema io.k8s.api.networking.v1.IngressTLS#secretName */ readonly secretName?: string; + } /** * Converts an object of type 'IngressTls' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_IngressTls( - obj: IngressTls | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_IngressTls(obj: IngressTls | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - hosts: obj.hosts?.map((y) => y), - secretName: obj.secretName, + 'hosts': obj.hosts?.map(y => y), + 'secretName': obj.secretName, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25010,30 +23970,24 @@ export interface IngressClassParametersReference { * @schema io.k8s.api.networking.v1.IngressClassParametersReference#scope */ readonly scope?: string; + } /** * Converts an object of type 'IngressClassParametersReference' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_IngressClassParametersReference( - obj: IngressClassParametersReference | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_IngressClassParametersReference(obj: IngressClassParametersReference | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiGroup: obj.apiGroup, - kind: obj.kind, - name: obj.name, - namespace: obj.namespace, - scope: obj.scope, + 'apiGroup': obj.apiGroup, + 'kind': obj.kind, + 'name': obj.name, + 'namespace': obj.namespace, + 'scope': obj.scope, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25056,27 +24010,21 @@ export interface NetworkPolicyEgressRule { * @schema io.k8s.api.networking.v1.NetworkPolicyEgressRule#to */ readonly to?: NetworkPolicyPeer[]; + } /** * Converts an object of type 'NetworkPolicyEgressRule' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NetworkPolicyEgressRule( - obj: NetworkPolicyEgressRule | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NetworkPolicyEgressRule(obj: NetworkPolicyEgressRule | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - ports: obj.ports?.map((y) => toJson_NetworkPolicyPort(y)), - to: obj.to?.map((y) => toJson_NetworkPolicyPeer(y)), + 'ports': obj.ports?.map(y => toJson_NetworkPolicyPort(y)), + 'to': obj.to?.map(y => toJson_NetworkPolicyPeer(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25099,27 +24047,21 @@ export interface NetworkPolicyIngressRule { * @schema io.k8s.api.networking.v1.NetworkPolicyIngressRule#ports */ readonly ports?: NetworkPolicyPort[]; + } /** * Converts an object of type 'NetworkPolicyIngressRule' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NetworkPolicyIngressRule( - obj: NetworkPolicyIngressRule | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NetworkPolicyIngressRule(obj: NetworkPolicyIngressRule | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - from: obj.from?.map((y) => toJson_NetworkPolicyPeer(y)), - ports: obj.ports?.map((y) => toJson_NetworkPolicyPort(y)), + 'from': obj.from?.map(y => toJson_NetworkPolicyPeer(y)), + 'ports': obj.ports?.map(y => toJson_NetworkPolicyPort(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25157,36 +24099,22 @@ export interface ParentReferenceV1Alpha1 { */ readonly resource?: string; - /** - * UID is the uid of the object being referenced. - * - * @schema io.k8s.api.networking.v1alpha1.ParentReference#uid - */ - readonly uid?: string; } /** * Converts an object of type 'ParentReferenceV1Alpha1' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ParentReferenceV1Alpha1( - obj: ParentReferenceV1Alpha1 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ParentReferenceV1Alpha1(obj: ParentReferenceV1Alpha1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - group: obj.group, - name: obj.name, - namespace: obj.namespace, - resource: obj.resource, - uid: obj.uid, + 'group': obj.group, + 'name': obj.name, + 'namespace': obj.namespace, + 'resource': obj.resource, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25219,27 +24147,21 @@ export interface Preconditions { * @schema io.k8s.apimachinery.pkg.apis.meta.v1.Preconditions#uid */ readonly uid?: string; + } /** * Converts an object of type 'Preconditions' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_Preconditions( - obj: Preconditions | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_Preconditions(obj: Preconditions | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - resourceVersion: obj.resourceVersion, - uid: obj.uid, + 'resourceVersion': obj.resourceVersion, + 'uid': obj.uid, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25253,7 +24175,8 @@ export class IntOrString { public static fromNumber(value: number): IntOrString { return new IntOrString(value); } - private constructor(public readonly value: string | number) {} + private constructor(public readonly value: string | number) { + } } /** @@ -25282,28 +24205,22 @@ export interface ResourceClaimParametersReferenceV1Alpha2 { * @schema io.k8s.api.resource.v1alpha2.ResourceClaimParametersReference#name */ readonly name: string; + } /** * Converts an object of type 'ResourceClaimParametersReferenceV1Alpha2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ResourceClaimParametersReferenceV1Alpha2( - obj: ResourceClaimParametersReferenceV1Alpha2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ResourceClaimParametersReferenceV1Alpha2(obj: ResourceClaimParametersReferenceV1Alpha2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiGroup: obj.apiGroup, - kind: obj.kind, - name: obj.name, + 'apiGroup': obj.apiGroup, + 'kind': obj.kind, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25326,29 +24243,21 @@ export interface NodeSelectorTerm { * @schema io.k8s.api.core.v1.NodeSelectorTerm#matchFields */ readonly matchFields?: NodeSelectorRequirement[]; + } /** * Converts an object of type 'NodeSelectorTerm' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NodeSelectorTerm( - obj: NodeSelectorTerm | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NodeSelectorTerm(obj: NodeSelectorTerm | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - matchExpressions: obj.matchExpressions?.map((y) => - toJson_NodeSelectorRequirement(y), - ), - matchFields: obj.matchFields?.map((y) => toJson_NodeSelectorRequirement(y)), + 'matchExpressions': obj.matchExpressions?.map(y => toJson_NodeSelectorRequirement(y)), + 'matchFields': obj.matchFields?.map(y => toJson_NodeSelectorRequirement(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25371,27 +24280,21 @@ export interface TokenRequest { * @schema io.k8s.api.storage.v1.TokenRequest#expirationSeconds */ readonly expirationSeconds?: number; + } /** * Converts an object of type 'TokenRequest' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_TokenRequest( - obj: TokenRequest | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_TokenRequest(obj: TokenRequest | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - audience: obj.audience, - expirationSeconds: obj.expirationSeconds, + 'audience': obj.audience, + 'expirationSeconds': obj.expirationSeconds, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25428,29 +24331,23 @@ export interface CsiNodeDriver { * @schema io.k8s.api.storage.v1.CSINodeDriver#topologyKeys */ readonly topologyKeys?: string[]; + } /** * Converts an object of type 'CsiNodeDriver' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CsiNodeDriver( - obj: CsiNodeDriver | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CsiNodeDriver(obj: CsiNodeDriver | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - allocatable: toJson_VolumeNodeResources(obj.allocatable), - name: obj.name, - nodeID: obj.nodeId, - topologyKeys: obj.topologyKeys?.map((y) => y), + 'allocatable': toJson_VolumeNodeResources(obj.allocatable), + 'name': obj.name, + 'nodeID': obj.nodeId, + 'topologyKeys': obj.topologyKeys?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25480,28 +24377,22 @@ export interface LabelSelectorRequirement { * @schema io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelectorRequirement#values */ readonly values?: string[]; + } /** * Converts an object of type 'LabelSelectorRequirement' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_LabelSelectorRequirement( - obj: LabelSelectorRequirement | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_LabelSelectorRequirement(obj: LabelSelectorRequirement | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - key: obj.key, - operator: obj.operator, - values: obj.values?.map((y) => y), + 'key': obj.key, + 'operator': obj.operator, + 'values': obj.values?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25524,27 +24415,21 @@ export interface TopologySelectorLabelRequirement { * @schema io.k8s.api.core.v1.TopologySelectorLabelRequirement#values */ readonly values: string[]; + } /** * Converts an object of type 'TopologySelectorLabelRequirement' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_TopologySelectorLabelRequirement( - obj: TopologySelectorLabelRequirement | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_TopologySelectorLabelRequirement(obj: TopologySelectorLabelRequirement | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - key: obj.key, - values: obj.values?.map((y) => y), + 'key': obj.key, + 'values': obj.values?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25567,27 +24452,21 @@ export interface VolumeAttachmentSource { * @schema io.k8s.api.storage.v1.VolumeAttachmentSource#persistentVolumeName */ readonly persistentVolumeName?: string; + } /** * Converts an object of type 'VolumeAttachmentSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_VolumeAttachmentSource( - obj: VolumeAttachmentSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_VolumeAttachmentSource(obj: VolumeAttachmentSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - inlineVolumeSpec: toJson_PersistentVolumeSpec(obj.inlineVolumeSpec), - persistentVolumeName: obj.persistentVolumeName, + 'inlineVolumeSpec': toJson_PersistentVolumeSpec(obj.inlineVolumeSpec), + 'persistentVolumeName': obj.persistentVolumeName, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25611,27 +24490,21 @@ export interface CustomResourceConversion { * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceConversion#webhook */ readonly webhook?: WebhookConversion; + } /** * Converts an object of type 'CustomResourceConversion' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CustomResourceConversion( - obj: CustomResourceConversion | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CustomResourceConversion(obj: CustomResourceConversion | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - strategy: obj.strategy, - webhook: toJson_WebhookConversion(obj.webhook), + 'strategy': obj.strategy, + 'webhook': toJson_WebhookConversion(obj.webhook), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25684,31 +24557,25 @@ export interface CustomResourceDefinitionNames { * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionNames#singular */ readonly singular?: string; + } /** * Converts an object of type 'CustomResourceDefinitionNames' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CustomResourceDefinitionNames( - obj: CustomResourceDefinitionNames | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CustomResourceDefinitionNames(obj: CustomResourceDefinitionNames | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - categories: obj.categories?.map((y) => y), - kind: obj.kind, - listKind: obj.listKind, - plural: obj.plural, - shortNames: obj.shortNames?.map((y) => y), - singular: obj.singular, + 'categories': obj.categories?.map(y => y), + 'kind': obj.kind, + 'listKind': obj.listKind, + 'plural': obj.plural, + 'shortNames': obj.shortNames?.map(y => y), + 'singular': obj.singular, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25774,35 +24641,27 @@ export interface CustomResourceDefinitionVersion { * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceDefinitionVersion#subresources */ readonly subresources?: CustomResourceSubresources; + } /** * Converts an object of type 'CustomResourceDefinitionVersion' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CustomResourceDefinitionVersion( - obj: CustomResourceDefinitionVersion | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CustomResourceDefinitionVersion(obj: CustomResourceDefinitionVersion | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - additionalPrinterColumns: obj.additionalPrinterColumns?.map((y) => - toJson_CustomResourceColumnDefinition(y), - ), - deprecated: obj.deprecated, - deprecationWarning: obj.deprecationWarning, - name: obj.name, - schema: toJson_CustomResourceValidation(obj.schema), - served: obj.served, - storage: obj.storage, - subresources: toJson_CustomResourceSubresources(obj.subresources), + 'additionalPrinterColumns': obj.additionalPrinterColumns?.map(y => toJson_CustomResourceColumnDefinition(y)), + 'deprecated': obj.deprecated, + 'deprecationWarning': obj.deprecationWarning, + 'name': obj.name, + 'schema': toJson_CustomResourceValidation(obj.schema), + 'served': obj.served, + 'storage': obj.storage, + 'subresources': toJson_CustomResourceSubresources(obj.subresources), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25836,28 +24695,22 @@ export interface StatusCause { * @schema io.k8s.apimachinery.pkg.apis.meta.v1.StatusCause#reason */ readonly reason?: string; + } /** * Converts an object of type 'StatusCause' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_StatusCause( - obj: StatusCause | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_StatusCause(obj: StatusCause | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - field: obj.field, - message: obj.message, - reason: obj.reason, + 'field': obj.field, + 'message': obj.message, + 'reason': obj.reason, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25895,29 +24748,23 @@ export interface ServiceReference { * @schema io.k8s.api.admissionregistration.v1.ServiceReference#port */ readonly port?: number; + } /** * Converts an object of type 'ServiceReference' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ServiceReference( - obj: ServiceReference | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ServiceReference(obj: ServiceReference | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, - namespace: obj.namespace, - path: obj.path, - port: obj.port, + 'name': obj.name, + 'namespace': obj.namespace, + 'path': obj.path, + 'port': obj.port, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -25975,31 +24822,101 @@ export interface NamedRuleWithOperationsV1Alpha1 { * @schema io.k8s.api.admissionregistration.v1alpha1.NamedRuleWithOperations#scope */ readonly scope?: string; + } /** * Converts an object of type 'NamedRuleWithOperationsV1Alpha1' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NamedRuleWithOperationsV1Alpha1( - obj: NamedRuleWithOperationsV1Alpha1 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NamedRuleWithOperationsV1Alpha1(obj: NamedRuleWithOperationsV1Alpha1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiGroups: obj.apiGroups?.map((y) => y), - apiVersions: obj.apiVersions?.map((y) => y), - operations: obj.operations?.map((y) => y), - resourceNames: obj.resourceNames?.map((y) => y), - resources: obj.resources?.map((y) => y), - scope: obj.scope, + 'apiGroups': obj.apiGroups?.map(y => y), + 'apiVersions': obj.apiVersions?.map(y => y), + 'operations': obj.operations?.map(y => y), + 'resourceNames': obj.resourceNames?.map(y => y), + 'resources': obj.resources?.map(y => y), + 'scope': obj.scope, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * NamedRuleWithOperations is a tuple of Operations and Resources with ResourceNames. + * + * @schema io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations + */ +export interface NamedRuleWithOperationsV1Beta1 { + /** + * APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required. + * + * @schema io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations#apiGroups + */ + readonly apiGroups?: string[]; + + /** + * APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required. + * + * @schema io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations#apiVersions + */ + readonly apiVersions?: string[]; + + /** + * Operations is the operations the admission hook cares about - CREATE, UPDATE, DELETE, CONNECT or * for all of those operations and any future admission operations that are added. If '*' is present, the length of the slice must be one. Required. + * + * @schema io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations#operations + */ + readonly operations?: string[]; + + /** + * ResourceNames is an optional white list of names that the rule applies to. An empty set means that everything is allowed. + * + * @schema io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations#resourceNames + */ + readonly resourceNames?: string[]; + + /** + * Resources is a list of resources this rule applies to. + * + * For example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '_/scale' means all scale subresources. '_/*' means all resources and their subresources. + * + * If wildcard is present, the validation rule will ensure resources do not overlap with each other. + * + * Depending on the enclosing object, subresources might not be allowed. Required. + * + * @schema io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations#resources + */ + readonly resources?: string[]; + + /** + * scope specifies the scope of this rule. Valid values are "Cluster", "Namespaced", and "*" "Cluster" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. "Namespaced" means that only namespaced resources will match this rule. "*" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is "*". + * + * @default . + * @schema io.k8s.api.admissionregistration.v1beta1.NamedRuleWithOperations#scope + */ + readonly scope?: string; + +} + +/** + * Converts an object of type 'NamedRuleWithOperationsV1Beta1' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_NamedRuleWithOperationsV1Beta1(obj: NamedRuleWithOperationsV1Beta1 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'apiGroups': obj.apiGroups?.map(y => y), + 'apiVersions': obj.apiVersions?.map(y => y), + 'operations': obj.operations?.map(y => y), + 'resourceNames': obj.resourceNames?.map(y => y), + 'resources': obj.resources?.map(y => y), + 'scope': obj.scope, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26022,27 +24939,21 @@ export interface RollingUpdateDaemonSet { * @schema io.k8s.api.apps.v1.RollingUpdateDaemonSet#maxUnavailable */ readonly maxUnavailable?: IntOrString; + } /** * Converts an object of type 'RollingUpdateDaemonSet' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_RollingUpdateDaemonSet( - obj: RollingUpdateDaemonSet | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_RollingUpdateDaemonSet(obj: RollingUpdateDaemonSet | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - maxSurge: obj.maxSurge?.value, - maxUnavailable: obj.maxUnavailable?.value, + 'maxSurge': obj.maxSurge?.value, + 'maxUnavailable': obj.maxUnavailable?.value, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26067,27 +24978,21 @@ export interface RollingUpdateDeployment { * @schema io.k8s.api.apps.v1.RollingUpdateDeployment#maxUnavailable */ readonly maxUnavailable?: IntOrString; + } /** * Converts an object of type 'RollingUpdateDeployment' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_RollingUpdateDeployment( - obj: RollingUpdateDeployment | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_RollingUpdateDeployment(obj: RollingUpdateDeployment | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - maxSurge: obj.maxSurge?.value, - maxUnavailable: obj.maxUnavailable?.value, + 'maxSurge': obj.maxSurge?.value, + 'maxUnavailable': obj.maxUnavailable?.value, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26111,27 +25016,21 @@ export interface RollingUpdateStatefulSetStrategy { * @schema io.k8s.api.apps.v1.RollingUpdateStatefulSetStrategy#partition */ readonly partition?: number; + } /** * Converts an object of type 'RollingUpdateStatefulSetStrategy' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_RollingUpdateStatefulSetStrategy( - obj: RollingUpdateStatefulSetStrategy | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_RollingUpdateStatefulSetStrategy(obj: RollingUpdateStatefulSetStrategy | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - maxUnavailable: obj.maxUnavailable?.value, - partition: obj.partition, + 'maxUnavailable': obj.maxUnavailable?.value, + 'partition': obj.partition, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26161,28 +25060,22 @@ export interface HpaScalingRulesV2 { * @schema io.k8s.api.autoscaling.v2.HPAScalingRules#stabilizationWindowSeconds */ readonly stabilizationWindowSeconds?: number; + } /** * Converts an object of type 'HpaScalingRulesV2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_HpaScalingRulesV2( - obj: HpaScalingRulesV2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_HpaScalingRulesV2(obj: HpaScalingRulesV2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - policies: obj.policies?.map((y) => toJson_HpaScalingPolicyV2(y)), - selectPolicy: obj.selectPolicy, - stabilizationWindowSeconds: obj.stabilizationWindowSeconds, + 'policies': obj.policies?.map(y => toJson_HpaScalingPolicyV2(y)), + 'selectPolicy': obj.selectPolicy, + 'stabilizationWindowSeconds': obj.stabilizationWindowSeconds, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26212,28 +25105,22 @@ export interface ContainerResourceMetricSourceV2 { * @schema io.k8s.api.autoscaling.v2.ContainerResourceMetricSource#target */ readonly target: MetricTargetV2; + } /** * Converts an object of type 'ContainerResourceMetricSourceV2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ContainerResourceMetricSourceV2( - obj: ContainerResourceMetricSourceV2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ContainerResourceMetricSourceV2(obj: ContainerResourceMetricSourceV2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - container: obj.container, - name: obj.name, - target: toJson_MetricTargetV2(obj.target), + 'container': obj.container, + 'name': obj.name, + 'target': toJson_MetricTargetV2(obj.target), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26256,27 +25143,21 @@ export interface ExternalMetricSourceV2 { * @schema io.k8s.api.autoscaling.v2.ExternalMetricSource#target */ readonly target: MetricTargetV2; + } /** * Converts an object of type 'ExternalMetricSourceV2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ExternalMetricSourceV2( - obj: ExternalMetricSourceV2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ExternalMetricSourceV2(obj: ExternalMetricSourceV2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metric: toJson_MetricIdentifierV2(obj.metric), - target: toJson_MetricTargetV2(obj.target), + 'metric': toJson_MetricIdentifierV2(obj.metric), + 'target': toJson_MetricTargetV2(obj.target), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26306,28 +25187,22 @@ export interface ObjectMetricSourceV2 { * @schema io.k8s.api.autoscaling.v2.ObjectMetricSource#target */ readonly target: MetricTargetV2; + } /** * Converts an object of type 'ObjectMetricSourceV2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ObjectMetricSourceV2( - obj: ObjectMetricSourceV2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ObjectMetricSourceV2(obj: ObjectMetricSourceV2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - describedObject: toJson_CrossVersionObjectReferenceV2(obj.describedObject), - metric: toJson_MetricIdentifierV2(obj.metric), - target: toJson_MetricTargetV2(obj.target), + 'describedObject': toJson_CrossVersionObjectReferenceV2(obj.describedObject), + 'metric': toJson_MetricIdentifierV2(obj.metric), + 'target': toJson_MetricTargetV2(obj.target), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26350,27 +25225,21 @@ export interface PodsMetricSourceV2 { * @schema io.k8s.api.autoscaling.v2.PodsMetricSource#target */ readonly target: MetricTargetV2; + } /** * Converts an object of type 'PodsMetricSourceV2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodsMetricSourceV2( - obj: PodsMetricSourceV2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodsMetricSourceV2(obj: PodsMetricSourceV2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metric: toJson_MetricIdentifierV2(obj.metric), - target: toJson_MetricTargetV2(obj.target), + 'metric': toJson_MetricIdentifierV2(obj.metric), + 'target': toJson_MetricTargetV2(obj.target), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26393,27 +25262,21 @@ export interface ResourceMetricSourceV2 { * @schema io.k8s.api.autoscaling.v2.ResourceMetricSource#target */ readonly target: MetricTargetV2; + } /** * Converts an object of type 'ResourceMetricSourceV2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ResourceMetricSourceV2( - obj: ResourceMetricSourceV2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ResourceMetricSourceV2(obj: ResourceMetricSourceV2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, - target: toJson_MetricTargetV2(obj.target), + 'name': obj.name, + 'target': toJson_MetricTargetV2(obj.target), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26428,6 +25291,10 @@ export interface PodFailurePolicyRule { * * - FailJob: indicates that the pod's job is marked as Failed and all * running pods are terminated. + * - FailIndex: indicates that the pod's index is marked as Failed and will + * not be restarted. + * This value is beta-level. It can be used when the + * `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default). * - Ignore: indicates that the counter towards the .backoffLimit is not * incremented and a replacement pod is created. * - Count: indicates that the pod is handled in the default way - the @@ -26450,31 +25317,23 @@ export interface PodFailurePolicyRule { * * @schema io.k8s.api.batch.v1.PodFailurePolicyRule#onPodConditions */ - readonly onPodConditions: PodFailurePolicyOnPodConditionsPattern[]; + readonly onPodConditions?: PodFailurePolicyOnPodConditionsPattern[]; + } /** * Converts an object of type 'PodFailurePolicyRule' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodFailurePolicyRule( - obj: PodFailurePolicyRule | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodFailurePolicyRule(obj: PodFailurePolicyRule | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - action: obj.action, - onExitCodes: toJson_PodFailurePolicyOnExitCodesRequirement(obj.onExitCodes), - onPodConditions: obj.onPodConditions?.map((y) => - toJson_PodFailurePolicyOnPodConditionsPattern(y), - ), + 'action': obj.action, + 'onExitCodes': toJson_PodFailurePolicyOnExitCodesRequirement(obj.onExitCodes), + 'onPodConditions': obj.onPodConditions?.map(y => toJson_PodFailurePolicyOnPodConditionsPattern(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26518,30 +25377,24 @@ export interface ConfigMapNodeConfigSource { * @schema io.k8s.api.core.v1.ConfigMapNodeConfigSource#uid */ readonly uid?: string; + } /** * Converts an object of type 'ConfigMapNodeConfigSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ConfigMapNodeConfigSource( - obj: ConfigMapNodeConfigSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ConfigMapNodeConfigSource(obj: ConfigMapNodeConfigSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - kubeletConfigKey: obj.kubeletConfigKey, - name: obj.name, - namespace: obj.namespace, - resourceVersion: obj.resourceVersion, - uid: obj.uid, + 'kubeletConfigKey': obj.kubeletConfigKey, + 'name': obj.name, + 'namespace': obj.namespace, + 'resourceVersion': obj.resourceVersion, + 'uid': obj.uid, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26564,62 +25417,21 @@ export interface SecretReference { * @schema io.k8s.api.core.v1.SecretReference#namespace */ readonly namespace?: string; -} - -/** - * Converts an object of type 'SecretReference' to JSON representation. - */ -/* eslint-disable max-len, quote-props */ -export function toJson_SecretReference( - obj: SecretReference | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } - const result = { - name: obj.name, - namespace: obj.namespace, - }; - // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); -} -/* eslint-enable max-len, quote-props */ -/** - * ResourceClaim references one entry in PodSpec.ResourceClaims. - * - * @schema io.k8s.api.core.v1.ResourceClaim - */ -export interface ResourceClaim { - /** - * Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. - * - * @schema io.k8s.api.core.v1.ResourceClaim#name - */ - readonly name: string; } /** - * Converts an object of type 'ResourceClaim' to JSON representation. + * Converts an object of type 'SecretReference' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ResourceClaim( - obj: ResourceClaim | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_SecretReference(obj: SecretReference | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, + 'name': obj.name, + 'namespace': obj.namespace, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26642,32 +25454,21 @@ export interface NodeAffinity { * @schema io.k8s.api.core.v1.NodeAffinity#requiredDuringSchedulingIgnoredDuringExecution */ readonly requiredDuringSchedulingIgnoredDuringExecution?: NodeSelector; + } /** * Converts an object of type 'NodeAffinity' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NodeAffinity( - obj: NodeAffinity | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NodeAffinity(obj: NodeAffinity | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - preferredDuringSchedulingIgnoredDuringExecution: - obj.preferredDuringSchedulingIgnoredDuringExecution?.map((y) => - toJson_PreferredSchedulingTerm(y), - ), - requiredDuringSchedulingIgnoredDuringExecution: toJson_NodeSelector( - obj.requiredDuringSchedulingIgnoredDuringExecution, - ), + 'preferredDuringSchedulingIgnoredDuringExecution': obj.preferredDuringSchedulingIgnoredDuringExecution?.map(y => toJson_PreferredSchedulingTerm(y)), + 'requiredDuringSchedulingIgnoredDuringExecution': toJson_NodeSelector(obj.requiredDuringSchedulingIgnoredDuringExecution), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26690,33 +25491,21 @@ export interface PodAffinity { * @schema io.k8s.api.core.v1.PodAffinity#requiredDuringSchedulingIgnoredDuringExecution */ readonly requiredDuringSchedulingIgnoredDuringExecution?: PodAffinityTerm[]; + } /** * Converts an object of type 'PodAffinity' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodAffinity( - obj: PodAffinity | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodAffinity(obj: PodAffinity | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - preferredDuringSchedulingIgnoredDuringExecution: - obj.preferredDuringSchedulingIgnoredDuringExecution?.map((y) => - toJson_WeightedPodAffinityTerm(y), - ), - requiredDuringSchedulingIgnoredDuringExecution: - obj.requiredDuringSchedulingIgnoredDuringExecution?.map((y) => - toJson_PodAffinityTerm(y), - ), + 'preferredDuringSchedulingIgnoredDuringExecution': obj.preferredDuringSchedulingIgnoredDuringExecution?.map(y => toJson_WeightedPodAffinityTerm(y)), + 'requiredDuringSchedulingIgnoredDuringExecution': obj.requiredDuringSchedulingIgnoredDuringExecution?.map(y => toJson_PodAffinityTerm(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26739,33 +25528,21 @@ export interface PodAntiAffinity { * @schema io.k8s.api.core.v1.PodAntiAffinity#requiredDuringSchedulingIgnoredDuringExecution */ readonly requiredDuringSchedulingIgnoredDuringExecution?: PodAffinityTerm[]; + } /** * Converts an object of type 'PodAntiAffinity' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodAntiAffinity( - obj: PodAntiAffinity | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodAntiAffinity(obj: PodAntiAffinity | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - preferredDuringSchedulingIgnoredDuringExecution: - obj.preferredDuringSchedulingIgnoredDuringExecution?.map((y) => - toJson_WeightedPodAffinityTerm(y), - ), - requiredDuringSchedulingIgnoredDuringExecution: - obj.requiredDuringSchedulingIgnoredDuringExecution?.map((y) => - toJson_PodAffinityTerm(y), - ), + 'preferredDuringSchedulingIgnoredDuringExecution': obj.preferredDuringSchedulingIgnoredDuringExecution?.map(y => toJson_WeightedPodAffinityTerm(y)), + 'requiredDuringSchedulingIgnoredDuringExecution': obj.requiredDuringSchedulingIgnoredDuringExecution?.map(y => toJson_PodAffinityTerm(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26796,28 +25573,22 @@ export interface EnvVar { * @schema io.k8s.api.core.v1.EnvVar#valueFrom */ readonly valueFrom?: EnvVarSource; + } /** * Converts an object of type 'EnvVar' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_EnvVar( - obj: EnvVar | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_EnvVar(obj: EnvVar | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, - value: obj.value, - valueFrom: toJson_EnvVarSource(obj.valueFrom), + 'name': obj.name, + 'value': obj.value, + 'valueFrom': toJson_EnvVarSource(obj.valueFrom), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26847,28 +25618,22 @@ export interface EnvFromSource { * @schema io.k8s.api.core.v1.EnvFromSource#secretRef */ readonly secretRef?: SecretEnvSource; + } /** * Converts an object of type 'EnvFromSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_EnvFromSource( - obj: EnvFromSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_EnvFromSource(obj: EnvFromSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - configMapRef: toJson_ConfigMapEnvSource(obj.configMapRef), - prefix: obj.prefix, - secretRef: toJson_SecretEnvSource(obj.secretRef), + 'configMapRef': toJson_ConfigMapEnvSource(obj.configMapRef), + 'prefix': obj.prefix, + 'secretRef': toJson_SecretEnvSource(obj.secretRef), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26891,27 +25656,21 @@ export interface Lifecycle { * @schema io.k8s.api.core.v1.Lifecycle#preStop */ readonly preStop?: LifecycleHandler; + } /** * Converts an object of type 'Lifecycle' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_Lifecycle( - obj: Lifecycle | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_Lifecycle(obj: Lifecycle | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - postStart: toJson_LifecycleHandler(obj.postStart), - preStop: toJson_LifecycleHandler(obj.preStop), + 'postStart': toJson_LifecycleHandler(obj.postStart), + 'preStop': toJson_LifecycleHandler(obj.preStop), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -26994,35 +25753,29 @@ export interface Probe { * @schema io.k8s.api.core.v1.Probe#timeoutSeconds */ readonly timeoutSeconds?: number; + } /** * Converts an object of type 'Probe' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_Probe( - obj: Probe | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_Probe(obj: Probe | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - exec: toJson_ExecAction(obj.exec), - failureThreshold: obj.failureThreshold, - grpc: toJson_GrpcAction(obj.grpc), - httpGet: toJson_HttpGetAction(obj.httpGet), - initialDelaySeconds: obj.initialDelaySeconds, - periodSeconds: obj.periodSeconds, - successThreshold: obj.successThreshold, - tcpSocket: toJson_TcpSocketAction(obj.tcpSocket), - terminationGracePeriodSeconds: obj.terminationGracePeriodSeconds, - timeoutSeconds: obj.timeoutSeconds, + 'exec': toJson_ExecAction(obj.exec), + 'failureThreshold': obj.failureThreshold, + 'grpc': toJson_GrpcAction(obj.grpc), + 'httpGet': toJson_HttpGetAction(obj.httpGet), + 'initialDelaySeconds': obj.initialDelaySeconds, + 'periodSeconds': obj.periodSeconds, + 'successThreshold': obj.successThreshold, + 'tcpSocket': toJson_TcpSocketAction(obj.tcpSocket), + 'terminationGracePeriodSeconds': obj.terminationGracePeriodSeconds, + 'timeoutSeconds': obj.timeoutSeconds, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27067,30 +25820,24 @@ export interface ContainerPort { * @schema io.k8s.api.core.v1.ContainerPort#protocol */ readonly protocol?: string; + } /** * Converts an object of type 'ContainerPort' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ContainerPort( - obj: ContainerPort | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ContainerPort(obj: ContainerPort | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - containerPort: obj.containerPort, - hostIP: obj.hostIp, - hostPort: obj.hostPort, - name: obj.name, - protocol: obj.protocol, + 'containerPort': obj.containerPort, + 'hostIP': obj.hostIp, + 'hostPort': obj.hostPort, + 'name': obj.name, + 'protocol': obj.protocol, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27113,27 +25860,70 @@ export interface ContainerResizePolicy { * @schema io.k8s.api.core.v1.ContainerResizePolicy#restartPolicy */ readonly restartPolicy: string; + } /** * Converts an object of type 'ContainerResizePolicy' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ContainerResizePolicy( - obj: ContainerResizePolicy | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ContainerResizePolicy(obj: ContainerResizePolicy | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'resourceName': obj.resourceName, + 'restartPolicy': obj.restartPolicy, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ResourceRequirements describes the compute resource requirements. + * + * @schema io.k8s.api.core.v1.ResourceRequirements + */ +export interface ResourceRequirements { + /** + * Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. + * + * This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. + * + * This field is immutable. It can only be set for containers. + * + * @schema io.k8s.api.core.v1.ResourceRequirements#claims + */ + readonly claims?: ResourceClaim[]; + + /** + * Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * + * @schema io.k8s.api.core.v1.ResourceRequirements#limits + */ + readonly limits?: { [key: string]: Quantity }; + + /** + * 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. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + * + * @schema io.k8s.api.core.v1.ResourceRequirements#requests + */ + readonly requests?: { [key: string]: Quantity }; + +} + +/** + * Converts an object of type 'ResourceRequirements' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ResourceRequirements(obj: ResourceRequirements | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - resourceName: obj.resourceName, - restartPolicy: obj.restartPolicy, + 'claims': obj.claims?.map(y => toJson_ResourceClaim(y)), + 'limits': ((obj.limits) === undefined) ? undefined : (Object.entries(obj.limits).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1]?.value }), {})), + 'requests': ((obj.requests) === undefined) ? undefined : (Object.entries(obj.requests).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1]?.value }), {})), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27223,36 +26013,30 @@ export interface SecurityContext { * @schema io.k8s.api.core.v1.SecurityContext#windowsOptions */ readonly windowsOptions?: WindowsSecurityContextOptions; + } /** * Converts an object of type 'SecurityContext' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_SecurityContext( - obj: SecurityContext | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_SecurityContext(obj: SecurityContext | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - allowPrivilegeEscalation: obj.allowPrivilegeEscalation, - capabilities: toJson_Capabilities(obj.capabilities), - privileged: obj.privileged, - procMount: obj.procMount, - readOnlyRootFilesystem: obj.readOnlyRootFilesystem, - runAsGroup: obj.runAsGroup, - runAsNonRoot: obj.runAsNonRoot, - runAsUser: obj.runAsUser, - seLinuxOptions: toJson_SeLinuxOptions(obj.seLinuxOptions), - seccompProfile: toJson_SeccompProfile(obj.seccompProfile), - windowsOptions: toJson_WindowsSecurityContextOptions(obj.windowsOptions), + 'allowPrivilegeEscalation': obj.allowPrivilegeEscalation, + 'capabilities': toJson_Capabilities(obj.capabilities), + 'privileged': obj.privileged, + 'procMount': obj.procMount, + 'readOnlyRootFilesystem': obj.readOnlyRootFilesystem, + 'runAsGroup': obj.runAsGroup, + 'runAsNonRoot': obj.runAsNonRoot, + 'runAsUser': obj.runAsUser, + 'seLinuxOptions': toJson_SeLinuxOptions(obj.seLinuxOptions), + 'seccompProfile': toJson_SeccompProfile(obj.seccompProfile), + 'windowsOptions': toJson_WindowsSecurityContextOptions(obj.windowsOptions), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27275,27 +26059,21 @@ export interface VolumeDevice { * @schema io.k8s.api.core.v1.VolumeDevice#name */ readonly name: string; + } /** * Converts an object of type 'VolumeDevice' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_VolumeDevice( - obj: VolumeDevice | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_VolumeDevice(obj: VolumeDevice | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - devicePath: obj.devicePath, - name: obj.name, + 'devicePath': obj.devicePath, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27349,31 +26127,25 @@ export interface VolumeMount { * @schema io.k8s.api.core.v1.VolumeMount#subPathExpr */ readonly subPathExpr?: string; + } /** * Converts an object of type 'VolumeMount' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_VolumeMount( - obj: VolumeMount | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_VolumeMount(obj: VolumeMount | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - mountPath: obj.mountPath, - mountPropagation: obj.mountPropagation, - name: obj.name, - readOnly: obj.readOnly, - subPath: obj.subPath, - subPathExpr: obj.subPathExpr, + 'mountPath': obj.mountPath, + 'mountPropagation': obj.mountPropagation, + 'name': obj.name, + 'readOnly': obj.readOnly, + 'subPath': obj.subPath, + 'subPathExpr': obj.subPathExpr, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27394,27 +26166,21 @@ export interface PodDnsConfigOption { * @schema io.k8s.api.core.v1.PodDNSConfigOption#value */ readonly value?: string; + } /** * Converts an object of type 'PodDnsConfigOption' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodDnsConfigOption( - obj: PodDnsConfigOption | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodDnsConfigOption(obj: PodDnsConfigOption | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, - value: obj.value, + 'name': obj.name, + 'value': obj.value, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27436,36 +26202,28 @@ export interface ClaimSource { /** * ResourceClaimTemplateName is the name of a ResourceClaimTemplate object in the same namespace as this pod. * - * The template will be used to create a new ResourceClaim, which will be bound to this pod. When this pod is deleted, the ResourceClaim will also be deleted. The name of the ResourceClaim will be -, where is the PodResourceClaim.Name. Pod validation will reject the pod if the concatenated name is not valid for a ResourceClaim (e.g. too long). - * - * An existing ResourceClaim with that name that is not owned by the pod will not be used for the pod to avoid using an unrelated resource by mistake. Scheduling and pod startup are then blocked until the unrelated ResourceClaim is removed. + * The template will be used to create a new ResourceClaim, which will be bound to this pod. When this pod is deleted, the ResourceClaim will also be deleted. The pod name and resource name, along with a generated component, will be used to form a unique name for the ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses. * * This field is immutable and no changes will be made to the corresponding ResourceClaim by the control plane after creating the ResourceClaim. * * @schema io.k8s.api.core.v1.ClaimSource#resourceClaimTemplateName */ readonly resourceClaimTemplateName?: string; + } /** * Converts an object of type 'ClaimSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ClaimSource( - obj: ClaimSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ClaimSource(obj: ClaimSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - resourceClaimName: obj.resourceClaimName, - resourceClaimTemplateName: obj.resourceClaimTemplateName, + 'resourceClaimName': obj.resourceClaimName, + 'resourceClaimTemplateName': obj.resourceClaimTemplateName, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27502,29 +26260,23 @@ export interface SeLinuxOptions { * @schema io.k8s.api.core.v1.SELinuxOptions#user */ readonly user?: string; + } /** * Converts an object of type 'SeLinuxOptions' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_SeLinuxOptions( - obj: SeLinuxOptions | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_SeLinuxOptions(obj: SeLinuxOptions | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - level: obj.level, - role: obj.role, - type: obj.type, - user: obj.user, + 'level': obj.level, + 'role': obj.role, + 'type': obj.type, + 'user': obj.user, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27535,7 +26287,7 @@ export function toJson_SeLinuxOptions( */ export interface SeccompProfile { /** - * localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is "Localhost". + * localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must be set if type is "Localhost". Must NOT be set for any other type. * * @schema io.k8s.api.core.v1.SeccompProfile#localhostProfile */ @@ -27549,27 +26301,21 @@ export interface SeccompProfile { * @schema io.k8s.api.core.v1.SeccompProfile#type */ readonly type: string; + } /** * Converts an object of type 'SeccompProfile' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_SeccompProfile( - obj: SeccompProfile | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_SeccompProfile(obj: SeccompProfile | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - localhostProfile: obj.localhostProfile, - type: obj.type, + 'localhostProfile': obj.localhostProfile, + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27592,27 +26338,21 @@ export interface Sysctl { * @schema io.k8s.api.core.v1.Sysctl#value */ readonly value: string; + } /** * Converts an object of type 'Sysctl' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_Sysctl( - obj: Sysctl | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_Sysctl(obj: Sysctl | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, - value: obj.value, + 'name': obj.name, + 'value': obj.value, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27637,7 +26377,7 @@ export interface WindowsSecurityContextOptions { readonly gmsaCredentialSpecName?: string; /** - * HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. + * HostProcess determines if a container should be run as a 'Host Process' container. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. * * @schema io.k8s.api.core.v1.WindowsSecurityContextOptions#hostProcess */ @@ -27650,29 +26390,23 @@ export interface WindowsSecurityContextOptions { * @schema io.k8s.api.core.v1.WindowsSecurityContextOptions#runAsUserName */ readonly runAsUserName?: string; + } /** * Converts an object of type 'WindowsSecurityContextOptions' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_WindowsSecurityContextOptions( - obj: WindowsSecurityContextOptions | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_WindowsSecurityContextOptions(obj: WindowsSecurityContextOptions | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - gmsaCredentialSpec: obj.gmsaCredentialSpec, - gmsaCredentialSpecName: obj.gmsaCredentialSpecName, - hostProcess: obj.hostProcess, - runAsUserName: obj.runAsUserName, + 'gmsaCredentialSpec': obj.gmsaCredentialSpec, + 'gmsaCredentialSpecName': obj.gmsaCredentialSpecName, + 'hostProcess': obj.hostProcess, + 'runAsUserName': obj.runAsUserName, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27702,28 +26436,22 @@ export interface AzureFileVolumeSource { * @schema io.k8s.api.core.v1.AzureFileVolumeSource#shareName */ readonly shareName: string; + } /** * Converts an object of type 'AzureFileVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_AzureFileVolumeSource( - obj: AzureFileVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_AzureFileVolumeSource(obj: AzureFileVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - readOnly: obj.readOnly, - secretName: obj.secretName, - shareName: obj.shareName, + 'readOnly': obj.readOnly, + 'secretName': obj.secretName, + 'shareName': obj.shareName, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27775,31 +26503,25 @@ export interface CephFsVolumeSource { * @schema io.k8s.api.core.v1.CephFSVolumeSource#user */ readonly user?: string; + } /** * Converts an object of type 'CephFsVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CephFsVolumeSource( - obj: CephFsVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CephFsVolumeSource(obj: CephFsVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - monitors: obj.monitors?.map((y) => y), - path: obj.path, - readOnly: obj.readOnly, - secretFile: obj.secretFile, - secretRef: toJson_LocalObjectReference(obj.secretRef), - user: obj.user, + 'monitors': obj.monitors?.map(y => y), + 'path': obj.path, + 'readOnly': obj.readOnly, + 'secretFile': obj.secretFile, + 'secretRef': toJson_LocalObjectReference(obj.secretRef), + 'user': obj.user, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27836,29 +26558,23 @@ export interface CinderVolumeSource { * @schema io.k8s.api.core.v1.CinderVolumeSource#volumeID */ readonly volumeId: string; + } /** * Converts an object of type 'CinderVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CinderVolumeSource( - obj: CinderVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CinderVolumeSource(obj: CinderVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsType: obj.fsType, - readOnly: obj.readOnly, - secretRef: toJson_LocalObjectReference(obj.secretRef), - volumeID: obj.volumeId, + 'fsType': obj.fsType, + 'readOnly': obj.readOnly, + 'secretRef': toJson_LocalObjectReference(obj.secretRef), + 'volumeID': obj.volumeId, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27898,29 +26614,23 @@ export interface ConfigMapVolumeSource { * @schema io.k8s.api.core.v1.ConfigMapVolumeSource#optional */ readonly optional?: boolean; + } /** * Converts an object of type 'ConfigMapVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ConfigMapVolumeSource( - obj: ConfigMapVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ConfigMapVolumeSource(obj: ConfigMapVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - defaultMode: obj.defaultMode, - items: obj.items?.map((y) => toJson_KeyToPath(y)), - name: obj.name, - optional: obj.optional, + 'defaultMode': obj.defaultMode, + 'items': obj.items?.map(y => toJson_KeyToPath(y)), + 'name': obj.name, + 'optional': obj.optional, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -27965,36 +26675,24 @@ export interface CsiVolumeSource { * @schema io.k8s.api.core.v1.CSIVolumeSource#volumeAttributes */ readonly volumeAttributes?: { [key: string]: string }; + } /** * Converts an object of type 'CsiVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CsiVolumeSource( - obj: CsiVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CsiVolumeSource(obj: CsiVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - driver: obj.driver, - fsType: obj.fsType, - nodePublishSecretRef: toJson_LocalObjectReference(obj.nodePublishSecretRef), - readOnly: obj.readOnly, - volumeAttributes: - obj.volumeAttributes === undefined - ? undefined - : Object.entries(obj.volumeAttributes).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), + 'driver': obj.driver, + 'fsType': obj.fsType, + 'nodePublishSecretRef': toJson_LocalObjectReference(obj.nodePublishSecretRef), + 'readOnly': obj.readOnly, + 'volumeAttributes': ((obj.volumeAttributes) === undefined) ? undefined : (Object.entries(obj.volumeAttributes).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28018,27 +26716,21 @@ export interface DownwardApiVolumeSource { * @schema io.k8s.api.core.v1.DownwardAPIVolumeSource#items */ readonly items?: DownwardApiVolumeFile[]; + } /** * Converts an object of type 'DownwardApiVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_DownwardApiVolumeSource( - obj: DownwardApiVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_DownwardApiVolumeSource(obj: DownwardApiVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - defaultMode: obj.defaultMode, - items: obj.items?.map((y) => toJson_DownwardApiVolumeFile(y)), + 'defaultMode': obj.defaultMode, + 'items': obj.items?.map(y => toJson_DownwardApiVolumeFile(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28061,27 +26753,21 @@ export interface EmptyDirVolumeSource { * @schema io.k8s.api.core.v1.EmptyDirVolumeSource#sizeLimit */ readonly sizeLimit?: Quantity; + } /** * Converts an object of type 'EmptyDirVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_EmptyDirVolumeSource( - obj: EmptyDirVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_EmptyDirVolumeSource(obj: EmptyDirVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - medium: obj.medium, - sizeLimit: obj.sizeLimit?.value, + 'medium': obj.medium, + 'sizeLimit': obj.sizeLimit?.value, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28103,28 +26789,20 @@ export interface EphemeralVolumeSource { * @schema io.k8s.api.core.v1.EphemeralVolumeSource#volumeClaimTemplate */ readonly volumeClaimTemplate?: PersistentVolumeClaimTemplate; + } /** * Converts an object of type 'EphemeralVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_EphemeralVolumeSource( - obj: EphemeralVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_EphemeralVolumeSource(obj: EphemeralVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - volumeClaimTemplate: toJson_PersistentVolumeClaimTemplate( - obj.volumeClaimTemplate, - ), + 'volumeClaimTemplate': toJson_PersistentVolumeClaimTemplate(obj.volumeClaimTemplate), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28168,36 +26846,24 @@ export interface FlexVolumeSource { * @schema io.k8s.api.core.v1.FlexVolumeSource#secretRef */ readonly secretRef?: LocalObjectReference; + } /** * Converts an object of type 'FlexVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_FlexVolumeSource( - obj: FlexVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_FlexVolumeSource(obj: FlexVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - driver: obj.driver, - fsType: obj.fsType, - options: - obj.options === undefined - ? undefined - : Object.entries(obj.options).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - readOnly: obj.readOnly, - secretRef: toJson_LocalObjectReference(obj.secretRef), + 'driver': obj.driver, + 'fsType': obj.fsType, + 'options': ((obj.options) === undefined) ? undefined : (Object.entries(obj.options).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'readOnly': obj.readOnly, + 'secretRef': toJson_LocalObjectReference(obj.secretRef), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28229,28 +26895,22 @@ export interface GitRepoVolumeSource { * @schema io.k8s.api.core.v1.GitRepoVolumeSource#revision */ readonly revision?: string; + } /** * Converts an object of type 'GitRepoVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_GitRepoVolumeSource( - obj: GitRepoVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_GitRepoVolumeSource(obj: GitRepoVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - directory: obj.directory, - repository: obj.repository, - revision: obj.revision, + 'directory': obj.directory, + 'repository': obj.repository, + 'revision': obj.revision, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28281,28 +26941,22 @@ export interface GlusterfsVolumeSource { * @schema io.k8s.api.core.v1.GlusterfsVolumeSource#readOnly */ readonly readOnly?: boolean; + } /** * Converts an object of type 'GlusterfsVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_GlusterfsVolumeSource( - obj: GlusterfsVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_GlusterfsVolumeSource(obj: GlusterfsVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - endpoints: obj.endpoints, - path: obj.path, - readOnly: obj.readOnly, + 'endpoints': obj.endpoints, + 'path': obj.path, + 'readOnly': obj.readOnly, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28390,36 +27044,30 @@ export interface IscsiVolumeSource { * @schema io.k8s.api.core.v1.ISCSIVolumeSource#targetPortal */ readonly targetPortal: string; + } /** * Converts an object of type 'IscsiVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_IscsiVolumeSource( - obj: IscsiVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_IscsiVolumeSource(obj: IscsiVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - chapAuthDiscovery: obj.chapAuthDiscovery, - chapAuthSession: obj.chapAuthSession, - fsType: obj.fsType, - initiatorName: obj.initiatorName, - iqn: obj.iqn, - iscsiInterface: obj.iscsiInterface, - lun: obj.lun, - portals: obj.portals?.map((y) => y), - readOnly: obj.readOnly, - secretRef: toJson_LocalObjectReference(obj.secretRef), - targetPortal: obj.targetPortal, + 'chapAuthDiscovery': obj.chapAuthDiscovery, + 'chapAuthSession': obj.chapAuthSession, + 'fsType': obj.fsType, + 'initiatorName': obj.initiatorName, + 'iqn': obj.iqn, + 'iscsiInterface': obj.iscsiInterface, + 'lun': obj.lun, + 'portals': obj.portals?.map(y => y), + 'readOnly': obj.readOnly, + 'secretRef': toJson_LocalObjectReference(obj.secretRef), + 'targetPortal': obj.targetPortal, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28442,27 +27090,21 @@ export interface PersistentVolumeClaimVolumeSource { * @schema io.k8s.api.core.v1.PersistentVolumeClaimVolumeSource#readOnly */ readonly readOnly?: boolean; + } /** * Converts an object of type 'PersistentVolumeClaimVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PersistentVolumeClaimVolumeSource( - obj: PersistentVolumeClaimVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PersistentVolumeClaimVolumeSource(obj: PersistentVolumeClaimVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - claimName: obj.claimName, - readOnly: obj.readOnly, + 'claimName': obj.claimName, + 'readOnly': obj.readOnly, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28485,27 +27127,21 @@ export interface ProjectedVolumeSource { * @schema io.k8s.api.core.v1.ProjectedVolumeSource#sources */ readonly sources?: VolumeProjection[]; + } /** * Converts an object of type 'ProjectedVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ProjectedVolumeSource( - obj: ProjectedVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ProjectedVolumeSource(obj: ProjectedVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - defaultMode: obj.defaultMode, - sources: obj.sources?.map((y) => toJson_VolumeProjection(y)), + 'defaultMode': obj.defaultMode, + 'sources': obj.sources?.map(y => toJson_VolumeProjection(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28575,33 +27211,27 @@ export interface RbdVolumeSource { * @schema io.k8s.api.core.v1.RBDVolumeSource#user */ readonly user?: string; + } /** * Converts an object of type 'RbdVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_RbdVolumeSource( - obj: RbdVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_RbdVolumeSource(obj: RbdVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsType: obj.fsType, - image: obj.image, - keyring: obj.keyring, - monitors: obj.monitors?.map((y) => y), - pool: obj.pool, - readOnly: obj.readOnly, - secretRef: toJson_LocalObjectReference(obj.secretRef), - user: obj.user, + 'fsType': obj.fsType, + 'image': obj.image, + 'keyring': obj.keyring, + 'monitors': obj.monitors?.map(y => y), + 'pool': obj.pool, + 'readOnly': obj.readOnly, + 'secretRef': toJson_LocalObjectReference(obj.secretRef), + 'user': obj.user, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28683,35 +27313,29 @@ export interface ScaleIoVolumeSource { * @schema io.k8s.api.core.v1.ScaleIOVolumeSource#volumeName */ readonly volumeName?: string; + } /** * Converts an object of type 'ScaleIoVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ScaleIoVolumeSource( - obj: ScaleIoVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ScaleIoVolumeSource(obj: ScaleIoVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsType: obj.fsType, - gateway: obj.gateway, - protectionDomain: obj.protectionDomain, - readOnly: obj.readOnly, - secretRef: toJson_LocalObjectReference(obj.secretRef), - sslEnabled: obj.sslEnabled, - storageMode: obj.storageMode, - storagePool: obj.storagePool, - system: obj.system, - volumeName: obj.volumeName, + 'fsType': obj.fsType, + 'gateway': obj.gateway, + 'protectionDomain': obj.protectionDomain, + 'readOnly': obj.readOnly, + 'secretRef': toJson_LocalObjectReference(obj.secretRef), + 'sslEnabled': obj.sslEnabled, + 'storageMode': obj.storageMode, + 'storagePool': obj.storagePool, + 'system': obj.system, + 'volumeName': obj.volumeName, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28751,29 +27375,23 @@ export interface SecretVolumeSource { * @schema io.k8s.api.core.v1.SecretVolumeSource#secretName */ readonly secretName?: string; + } /** * Converts an object of type 'SecretVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_SecretVolumeSource( - obj: SecretVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_SecretVolumeSource(obj: SecretVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - defaultMode: obj.defaultMode, - items: obj.items?.map((y) => toJson_KeyToPath(y)), - optional: obj.optional, - secretName: obj.secretName, + 'defaultMode': obj.defaultMode, + 'items': obj.items?.map(y => toJson_KeyToPath(y)), + 'optional': obj.optional, + 'secretName': obj.secretName, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28817,30 +27435,24 @@ export interface StorageOsVolumeSource { * @schema io.k8s.api.core.v1.StorageOSVolumeSource#volumeNamespace */ readonly volumeNamespace?: string; + } /** * Converts an object of type 'StorageOsVolumeSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_StorageOsVolumeSource( - obj: StorageOsVolumeSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_StorageOsVolumeSource(obj: StorageOsVolumeSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fsType: obj.fsType, - readOnly: obj.readOnly, - secretRef: toJson_LocalObjectReference(obj.secretRef), - volumeName: obj.volumeName, - volumeNamespace: obj.volumeNamespace, + 'fsType': obj.fsType, + 'readOnly': obj.readOnly, + 'secretRef': toJson_LocalObjectReference(obj.secretRef), + 'volumeName': obj.volumeName, + 'volumeNamespace': obj.volumeNamespace, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28870,28 +27482,22 @@ export interface ScopedResourceSelectorRequirement { * @schema io.k8s.api.core.v1.ScopedResourceSelectorRequirement#values */ readonly values?: string[]; + } /** * Converts an object of type 'ScopedResourceSelectorRequirement' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ScopedResourceSelectorRequirement( - obj: ScopedResourceSelectorRequirement | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ScopedResourceSelectorRequirement(obj: ScopedResourceSelectorRequirement | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - operator: obj.operator, - scopeName: obj.scopeName, - values: obj.values?.map((y) => y), + 'operator': obj.operator, + 'scopeName': obj.scopeName, + 'values': obj.values?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28907,26 +27513,20 @@ export interface ClientIpConfig { * @schema io.k8s.api.core.v1.ClientIPConfig#timeoutSeconds */ readonly timeoutSeconds?: number; + } /** * Converts an object of type 'ClientIpConfig' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ClientIpConfig( - obj: ClientIpConfig | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ClientIpConfig(obj: ClientIpConfig | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - timeoutSeconds: obj.timeoutSeconds, + 'timeoutSeconds': obj.timeoutSeconds, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -28942,35 +27542,29 @@ export interface ForZone { * @schema io.k8s.api.discovery.v1.ForZone#name */ readonly name: string; + } /** * Converts an object of type 'ForZone' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ForZone( - obj: ForZone | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ForZone(obj: ForZone | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * NonResourcePolicyRule is a predicate that matches non-resource requests according to their verb and the target non-resource URL. A NonResourcePolicyRule matches a request if and only if both (a) at least one member of verbs matches the request and (b) at least one member of nonResourceURLs matches the request. * - * @schema io.k8s.api.flowcontrol.v1beta2.NonResourcePolicyRule + * @schema io.k8s.api.flowcontrol.v1.NonResourcePolicyRule */ -export interface NonResourcePolicyRuleV1Beta2 { +export interface NonResourcePolicyRule { /** * `nonResourceURLs` is a set of url prefixes that a user should have access to and may not be empty. For example: * - "/healthz" is legal @@ -28980,206 +27574,129 @@ export interface NonResourcePolicyRuleV1Beta2 { * - "/healthz/*" matches all per-component health checks. * "*" matches all non-resource urls. if it is present, it must be the only entry. Required. * - * @schema io.k8s.api.flowcontrol.v1beta2.NonResourcePolicyRule#nonResourceURLs + * @schema io.k8s.api.flowcontrol.v1.NonResourcePolicyRule#nonResourceURLs */ readonly nonResourceUrLs: string[]; /** * `verbs` is a list of matching verbs and may not be empty. "*" matches all verbs. If it is present, it must be the only entry. Required. * - * @schema io.k8s.api.flowcontrol.v1beta2.NonResourcePolicyRule#verbs + * @schema io.k8s.api.flowcontrol.v1.NonResourcePolicyRule#verbs */ readonly verbs: string[]; + } /** - * Converts an object of type 'NonResourcePolicyRuleV1Beta2' to JSON representation. + * Converts an object of type 'NonResourcePolicyRule' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NonResourcePolicyRuleV1Beta2( - obj: NonResourcePolicyRuleV1Beta2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NonResourcePolicyRule(obj: NonResourcePolicyRule | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - nonResourceURLs: obj.nonResourceUrLs?.map((y) => y), - verbs: obj.verbs?.map((y) => y), + 'nonResourceURLs': obj.nonResourceUrLs?.map(y => y), + 'verbs': obj.verbs?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * ResourcePolicyRule is a predicate that matches some resource requests, testing the request's verb and the target resource. A ResourcePolicyRule matches a resource request if and only if: (a) at least one member of verbs matches the request, (b) at least one member of apiGroups matches the request, (c) at least one member of resources matches the request, and (d) either (d1) the request does not specify a namespace (i.e., `Namespace==""`) and clusterScope is true or (d2) the request specifies a namespace and least one member of namespaces matches the request's namespace. * - * @schema io.k8s.api.flowcontrol.v1beta2.ResourcePolicyRule + * @schema io.k8s.api.flowcontrol.v1.ResourcePolicyRule */ -export interface ResourcePolicyRuleV1Beta2 { +export interface ResourcePolicyRule { /** * `apiGroups` is a list of matching API groups and may not be empty. "*" matches all API groups and, if present, must be the only entry. Required. * - * @schema io.k8s.api.flowcontrol.v1beta2.ResourcePolicyRule#apiGroups + * @schema io.k8s.api.flowcontrol.v1.ResourcePolicyRule#apiGroups */ readonly apiGroups: string[]; /** * `clusterScope` indicates whether to match requests that do not specify a namespace (which happens either because the resource is not namespaced or the request targets all namespaces). If this field is omitted or false then the `namespaces` field must contain a non-empty list. * - * @schema io.k8s.api.flowcontrol.v1beta2.ResourcePolicyRule#clusterScope + * @schema io.k8s.api.flowcontrol.v1.ResourcePolicyRule#clusterScope */ readonly clusterScope?: boolean; /** * `namespaces` is a list of target namespaces that restricts matches. A request that specifies a target namespace matches only if either (a) this list contains that target namespace or (b) this list contains "*". Note that "*" matches any specified namespace but does not match a request that _does not specify_ a namespace (see the `clusterScope` field for that). This list may be empty, but only if `clusterScope` is true. * - * @schema io.k8s.api.flowcontrol.v1beta2.ResourcePolicyRule#namespaces + * @schema io.k8s.api.flowcontrol.v1.ResourcePolicyRule#namespaces */ readonly namespaces?: string[]; /** * `resources` is a list of matching resources (i.e., lowercase and plural) with, if desired, subresource. For example, [ "services", "nodes/status" ]. This list may not be empty. "*" matches all resources and, if present, must be the only entry. Required. * - * @schema io.k8s.api.flowcontrol.v1beta2.ResourcePolicyRule#resources + * @schema io.k8s.api.flowcontrol.v1.ResourcePolicyRule#resources */ readonly resources: string[]; /** * `verbs` is a list of matching verbs and may not be empty. "*" matches all verbs and, if present, must be the only entry. Required. * - * @schema io.k8s.api.flowcontrol.v1beta2.ResourcePolicyRule#verbs + * @schema io.k8s.api.flowcontrol.v1.ResourcePolicyRule#verbs */ readonly verbs: string[]; -} - -/** - * Converts an object of type 'ResourcePolicyRuleV1Beta2' to JSON representation. - */ -/* eslint-disable max-len, quote-props */ -export function toJson_ResourcePolicyRuleV1Beta2( - obj: ResourcePolicyRuleV1Beta2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } - const result = { - apiGroups: obj.apiGroups?.map((y) => y), - clusterScope: obj.clusterScope, - namespaces: obj.namespaces?.map((y) => y), - resources: obj.resources?.map((y) => y), - verbs: obj.verbs?.map((y) => y), - }; - // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); -} -/* eslint-enable max-len, quote-props */ - -/** - * Subject matches the originator of a request, as identified by the request authentication system. There are three ways of matching an originator; by user, group, or service account. - * - * @schema io.k8s.api.flowcontrol.v1beta2.Subject - */ -export interface SubjectV1Beta2 { - /** - * `group` matches based on user group name. - * - * @schema io.k8s.api.flowcontrol.v1beta2.Subject#group - */ - readonly group?: GroupSubjectV1Beta2; - - /** - * `kind` indicates which one of the other fields is non-empty. Required - * - * @schema io.k8s.api.flowcontrol.v1beta2.Subject#kind - */ - readonly kind: string; - - /** - * `serviceAccount` matches ServiceAccounts. - * - * @schema io.k8s.api.flowcontrol.v1beta2.Subject#serviceAccount - */ - readonly serviceAccount?: ServiceAccountSubjectV1Beta2; - /** - * `user` matches based on username. - * - * @schema io.k8s.api.flowcontrol.v1beta2.Subject#user - */ - readonly user?: UserSubjectV1Beta2; } /** - * Converts an object of type 'SubjectV1Beta2' to JSON representation. + * Converts an object of type 'ResourcePolicyRule' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_SubjectV1Beta2( - obj: SubjectV1Beta2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ResourcePolicyRule(obj: ResourcePolicyRule | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - group: toJson_GroupSubjectV1Beta2(obj.group), - kind: obj.kind, - serviceAccount: toJson_ServiceAccountSubjectV1Beta2(obj.serviceAccount), - user: toJson_UserSubjectV1Beta2(obj.user), + 'apiGroups': obj.apiGroups?.map(y => y), + 'clusterScope': obj.clusterScope, + 'namespaces': obj.namespaces?.map(y => y), + 'resources': obj.resources?.map(y => y), + 'verbs': obj.verbs?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * LimitResponse defines how to handle requests that can not be executed right now. * - * @schema io.k8s.api.flowcontrol.v1beta2.LimitResponse + * @schema io.k8s.api.flowcontrol.v1.LimitResponse */ -export interface LimitResponseV1Beta2 { +export interface LimitResponse { /** * `queuing` holds the configuration parameters for queuing. This field may be non-empty only if `type` is `"Queue"`. * - * @schema io.k8s.api.flowcontrol.v1beta2.LimitResponse#queuing + * @schema io.k8s.api.flowcontrol.v1.LimitResponse#queuing */ - readonly queuing?: QueuingConfigurationV1Beta2; + readonly queuing?: QueuingConfiguration; /** * `type` is "Queue" or "Reject". "Queue" means that requests that can not be executed upon arrival are held in a queue until they can be executed or a queuing limit is reached. "Reject" means that requests that can not be executed upon arrival are rejected. Required. * - * @schema io.k8s.api.flowcontrol.v1beta2.LimitResponse#type + * @schema io.k8s.api.flowcontrol.v1.LimitResponse#type */ readonly type: string; + } /** - * Converts an object of type 'LimitResponseV1Beta2' to JSON representation. + * Converts an object of type 'LimitResponse' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_LimitResponseV1Beta2( - obj: LimitResponseV1Beta2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_LimitResponse(obj: LimitResponse | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - queuing: toJson_QueuingConfigurationV1Beta2(obj.queuing), - type: obj.type, + 'queuing': toJson_QueuingConfiguration(obj.queuing), + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29208,27 +27725,21 @@ export interface NonResourcePolicyRuleV1Beta3 { * @schema io.k8s.api.flowcontrol.v1beta3.NonResourcePolicyRule#verbs */ readonly verbs: string[]; + } /** * Converts an object of type 'NonResourcePolicyRuleV1Beta3' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NonResourcePolicyRuleV1Beta3( - obj: NonResourcePolicyRuleV1Beta3 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NonResourcePolicyRuleV1Beta3(obj: NonResourcePolicyRuleV1Beta3 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - nonResourceURLs: obj.nonResourceUrLs?.map((y) => y), - verbs: obj.verbs?.map((y) => y), + 'nonResourceURLs': obj.nonResourceUrLs?.map(y => y), + 'verbs': obj.verbs?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29272,30 +27783,24 @@ export interface ResourcePolicyRuleV1Beta3 { * @schema io.k8s.api.flowcontrol.v1beta3.ResourcePolicyRule#verbs */ readonly verbs: string[]; + } /** * Converts an object of type 'ResourcePolicyRuleV1Beta3' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ResourcePolicyRuleV1Beta3( - obj: ResourcePolicyRuleV1Beta3 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ResourcePolicyRuleV1Beta3(obj: ResourcePolicyRuleV1Beta3 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiGroups: obj.apiGroups?.map((y) => y), - clusterScope: obj.clusterScope, - namespaces: obj.namespaces?.map((y) => y), - resources: obj.resources?.map((y) => y), - verbs: obj.verbs?.map((y) => y), + 'apiGroups': obj.apiGroups?.map(y => y), + 'clusterScope': obj.clusterScope, + 'namespaces': obj.namespaces?.map(y => y), + 'resources': obj.resources?.map(y => y), + 'verbs': obj.verbs?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29332,29 +27837,23 @@ export interface SubjectV1Beta3 { * @schema io.k8s.api.flowcontrol.v1beta3.Subject#user */ readonly user?: UserSubjectV1Beta3; + } /** * Converts an object of type 'SubjectV1Beta3' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_SubjectV1Beta3( - obj: SubjectV1Beta3 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_SubjectV1Beta3(obj: SubjectV1Beta3 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - group: toJson_GroupSubjectV1Beta3(obj.group), - kind: obj.kind, - serviceAccount: toJson_ServiceAccountSubjectV1Beta3(obj.serviceAccount), - user: toJson_UserSubjectV1Beta3(obj.user), + 'group': toJson_GroupSubjectV1Beta3(obj.group), + 'kind': obj.kind, + 'serviceAccount': toJson_ServiceAccountSubjectV1Beta3(obj.serviceAccount), + 'user': toJson_UserSubjectV1Beta3(obj.user), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29377,27 +27876,21 @@ export interface LimitResponseV1Beta3 { * @schema io.k8s.api.flowcontrol.v1beta3.LimitResponse#type */ readonly type: string; + } /** * Converts an object of type 'LimitResponseV1Beta3' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_LimitResponseV1Beta3( - obj: LimitResponseV1Beta3 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_LimitResponseV1Beta3(obj: LimitResponseV1Beta3 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - queuing: toJson_QueuingConfigurationV1Beta3(obj.queuing), - type: obj.type, + 'queuing': toJson_QueuingConfigurationV1Beta3(obj.queuing), + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29420,27 +27913,21 @@ export interface IngressServiceBackend { * @schema io.k8s.api.networking.v1.IngressServiceBackend#port */ readonly port?: ServiceBackendPort; + } /** * Converts an object of type 'IngressServiceBackend' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_IngressServiceBackend( - obj: IngressServiceBackend | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_IngressServiceBackend(obj: IngressServiceBackend | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, - port: toJson_ServiceBackendPort(obj.port), + 'name': obj.name, + 'port': toJson_ServiceBackendPort(obj.port), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29456,26 +27943,20 @@ export interface HttpIngressRuleValue { * @schema io.k8s.api.networking.v1.HTTPIngressRuleValue#paths */ readonly paths: HttpIngressPath[]; + } /** * Converts an object of type 'HttpIngressRuleValue' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_HttpIngressRuleValue( - obj: HttpIngressRuleValue | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_HttpIngressRuleValue(obj: HttpIngressRuleValue | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - paths: obj.paths?.map((y) => toJson_HttpIngressPath(y)), + 'paths': obj.paths?.map(y => toJson_HttpIngressPath(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29505,28 +27986,22 @@ export interface NetworkPolicyPort { * @schema io.k8s.api.networking.v1.NetworkPolicyPort#protocol */ readonly protocol?: string; + } /** * Converts an object of type 'NetworkPolicyPort' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NetworkPolicyPort( - obj: NetworkPolicyPort | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NetworkPolicyPort(obj: NetworkPolicyPort | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - endPort: obj.endPort, - port: obj.port?.value, - protocol: obj.protocol, + 'endPort': obj.endPort, + 'port': obj.port?.value, + 'protocol': obj.protocol, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29560,28 +28035,22 @@ export interface NetworkPolicyPeer { * @schema io.k8s.api.networking.v1.NetworkPolicyPeer#podSelector */ readonly podSelector?: LabelSelector; + } /** * Converts an object of type 'NetworkPolicyPeer' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NetworkPolicyPeer( - obj: NetworkPolicyPeer | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NetworkPolicyPeer(obj: NetworkPolicyPeer | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - ipBlock: toJson_IpBlock(obj.ipBlock), - namespaceSelector: toJson_LabelSelector(obj.namespaceSelector), - podSelector: toJson_LabelSelector(obj.podSelector), + 'ipBlock': toJson_IpBlock(obj.ipBlock), + 'namespaceSelector': toJson_LabelSelector(obj.namespaceSelector), + 'podSelector': toJson_LabelSelector(obj.podSelector), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29611,28 +28080,22 @@ export interface NodeSelectorRequirement { * @schema io.k8s.api.core.v1.NodeSelectorRequirement#values */ readonly values?: string[]; + } /** * Converts an object of type 'NodeSelectorRequirement' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_NodeSelectorRequirement( - obj: NodeSelectorRequirement | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_NodeSelectorRequirement(obj: NodeSelectorRequirement | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - key: obj.key, - operator: obj.operator, - values: obj.values?.map((y) => y), + 'key': obj.key, + 'operator': obj.operator, + 'values': obj.values?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29648,26 +28111,20 @@ export interface VolumeNodeResources { * @schema io.k8s.api.storage.v1.VolumeNodeResources#count */ readonly count?: number; + } /** * Converts an object of type 'VolumeNodeResources' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_VolumeNodeResources( - obj: VolumeNodeResources | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_VolumeNodeResources(obj: VolumeNodeResources | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - count: obj.count, + 'count': obj.count, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29690,27 +28147,21 @@ export interface WebhookConversion { * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.WebhookConversion#conversionReviewVersions */ readonly conversionReviewVersions: string[]; + } /** * Converts an object of type 'WebhookConversion' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_WebhookConversion( - obj: WebhookConversion | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_WebhookConversion(obj: WebhookConversion | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - clientConfig: toJson_WebhookClientConfig(obj.clientConfig), - conversionReviewVersions: obj.conversionReviewVersions?.map((y) => y), + 'clientConfig': toJson_WebhookClientConfig(obj.clientConfig), + 'conversionReviewVersions': obj.conversionReviewVersions?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29761,31 +28212,25 @@ export interface CustomResourceColumnDefinition { * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceColumnDefinition#type */ readonly type: string; + } /** * Converts an object of type 'CustomResourceColumnDefinition' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CustomResourceColumnDefinition( - obj: CustomResourceColumnDefinition | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CustomResourceColumnDefinition(obj: CustomResourceColumnDefinition | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - description: obj.description, - format: obj.format, - jsonPath: obj.jsonPath, - name: obj.name, - priority: obj.priority, - type: obj.type, + 'description': obj.description, + 'format': obj.format, + 'jsonPath': obj.jsonPath, + 'name': obj.name, + 'priority': obj.priority, + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29801,26 +28246,20 @@ export interface CustomResourceValidation { * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceValidation#openAPIV3Schema */ readonly openApiv3Schema?: JsonSchemaProps; + } /** * Converts an object of type 'CustomResourceValidation' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CustomResourceValidation( - obj: CustomResourceValidation | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CustomResourceValidation(obj: CustomResourceValidation | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - openAPIV3Schema: toJson_JsonSchemaProps(obj.openApiv3Schema), + 'openAPIV3Schema': toJson_JsonSchemaProps(obj.openApiv3Schema), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29843,27 +28282,21 @@ export interface CustomResourceSubresources { * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources#status */ readonly status?: any; + } /** * Converts an object of type 'CustomResourceSubresources' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CustomResourceSubresources( - obj: CustomResourceSubresources | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CustomResourceSubresources(obj: CustomResourceSubresources | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - scale: toJson_CustomResourceSubresourceScale(obj.scale), - status: obj.status, + 'scale': toJson_CustomResourceSubresourceScale(obj.scale), + 'status': obj.status, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29893,28 +28326,22 @@ export interface HpaScalingPolicyV2 { * @schema io.k8s.api.autoscaling.v2.HPAScalingPolicy#value */ readonly value: number; + } /** * Converts an object of type 'HpaScalingPolicyV2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_HpaScalingPolicyV2( - obj: HpaScalingPolicyV2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_HpaScalingPolicyV2(obj: HpaScalingPolicyV2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - periodSeconds: obj.periodSeconds, - type: obj.type, - value: obj.value, + 'periodSeconds': obj.periodSeconds, + 'type': obj.type, + 'value': obj.value, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29951,29 +28378,23 @@ export interface MetricTargetV2 { * @schema io.k8s.api.autoscaling.v2.MetricTarget#value */ readonly value?: Quantity; + } /** * Converts an object of type 'MetricTargetV2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_MetricTargetV2( - obj: MetricTargetV2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_MetricTargetV2(obj: MetricTargetV2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - averageUtilization: obj.averageUtilization, - averageValue: obj.averageValue?.value, - type: obj.type, - value: obj.value?.value, + 'averageUtilization': obj.averageUtilization, + 'averageValue': obj.averageValue?.value, + 'type': obj.type, + 'value': obj.value?.value, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -29996,27 +28417,21 @@ export interface MetricIdentifierV2 { * @schema io.k8s.api.autoscaling.v2.MetricIdentifier#selector */ readonly selector?: LabelSelector; + } /** * Converts an object of type 'MetricIdentifierV2' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_MetricIdentifierV2( - obj: MetricIdentifierV2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_MetricIdentifierV2(obj: MetricIdentifierV2 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, - selector: toJson_LabelSelector(obj.selector), + 'name': obj.name, + 'selector': toJson_LabelSelector(obj.selector), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30054,28 +28469,22 @@ export interface PodFailurePolicyOnExitCodesRequirement { * @schema io.k8s.api.batch.v1.PodFailurePolicyOnExitCodesRequirement#values */ readonly values: number[]; + } /** * Converts an object of type 'PodFailurePolicyOnExitCodesRequirement' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodFailurePolicyOnExitCodesRequirement( - obj: PodFailurePolicyOnExitCodesRequirement | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodFailurePolicyOnExitCodesRequirement(obj: PodFailurePolicyOnExitCodesRequirement | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - containerName: obj.containerName, - operator: obj.operator, - values: obj.values?.map((y) => y), + 'containerName': obj.containerName, + 'operator': obj.operator, + 'values': obj.values?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30099,27 +28508,21 @@ export interface PodFailurePolicyOnPodConditionsPattern { * @schema io.k8s.api.batch.v1.PodFailurePolicyOnPodConditionsPattern#type */ readonly type: string; + } /** * Converts an object of type 'PodFailurePolicyOnPodConditionsPattern' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodFailurePolicyOnPodConditionsPattern( - obj: PodFailurePolicyOnPodConditionsPattern | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodFailurePolicyOnPodConditionsPattern(obj: PodFailurePolicyOnPodConditionsPattern | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - status: obj.status, - type: obj.type, + 'status': obj.status, + 'type': obj.type, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30142,27 +28545,21 @@ export interface PreferredSchedulingTerm { * @schema io.k8s.api.core.v1.PreferredSchedulingTerm#weight */ readonly weight: number; + } /** * Converts an object of type 'PreferredSchedulingTerm' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PreferredSchedulingTerm( - obj: PreferredSchedulingTerm | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PreferredSchedulingTerm(obj: PreferredSchedulingTerm | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - preference: toJson_NodeSelectorTerm(obj.preference), - weight: obj.weight, + 'preference': toJson_NodeSelectorTerm(obj.preference), + 'weight': obj.weight, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30185,27 +28582,21 @@ export interface WeightedPodAffinityTerm { * @schema io.k8s.api.core.v1.WeightedPodAffinityTerm#weight */ readonly weight: number; + } /** * Converts an object of type 'WeightedPodAffinityTerm' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_WeightedPodAffinityTerm( - obj: WeightedPodAffinityTerm | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_WeightedPodAffinityTerm(obj: WeightedPodAffinityTerm | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - podAffinityTerm: toJson_PodAffinityTerm(obj.podAffinityTerm), - weight: obj.weight, + 'podAffinityTerm': toJson_PodAffinityTerm(obj.podAffinityTerm), + 'weight': obj.weight, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30216,11 +28607,25 @@ export function toJson_WeightedPodAffinityTerm( */ export interface PodAffinityTerm { /** - * A label query over a set of resources, in this case pods. + * A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + * + * @schema io.k8s.api.core.v1.PodAffinityTerm#labelSelector + */ + readonly labelSelector?: LabelSelector; + + /** + * MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + * + * @schema io.k8s.api.core.v1.PodAffinityTerm#matchLabelKeys + */ + readonly matchLabelKeys?: string[]; + + /** + * MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. * - * @schema io.k8s.api.core.v1.PodAffinityTerm#labelSelector + * @schema io.k8s.api.core.v1.PodAffinityTerm#mismatchLabelKeys */ - readonly labelSelector?: LabelSelector; + readonly mismatchLabelKeys?: string[]; /** * A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. @@ -30242,29 +28647,25 @@ export interface PodAffinityTerm { * @schema io.k8s.api.core.v1.PodAffinityTerm#topologyKey */ readonly topologyKey: string; + } /** * Converts an object of type 'PodAffinityTerm' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PodAffinityTerm( - obj: PodAffinityTerm | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PodAffinityTerm(obj: PodAffinityTerm | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - labelSelector: toJson_LabelSelector(obj.labelSelector), - namespaceSelector: toJson_LabelSelector(obj.namespaceSelector), - namespaces: obj.namespaces?.map((y) => y), - topologyKey: obj.topologyKey, + 'labelSelector': toJson_LabelSelector(obj.labelSelector), + 'matchLabelKeys': obj.matchLabelKeys?.map(y => y), + 'mismatchLabelKeys': obj.mismatchLabelKeys?.map(y => y), + 'namespaceSelector': toJson_LabelSelector(obj.namespaceSelector), + 'namespaces': obj.namespaces?.map(y => y), + 'topologyKey': obj.topologyKey, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30301,29 +28702,23 @@ export interface EnvVarSource { * @schema io.k8s.api.core.v1.EnvVarSource#secretKeyRef */ readonly secretKeyRef?: SecretKeySelector; + } /** * Converts an object of type 'EnvVarSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_EnvVarSource( - obj: EnvVarSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_EnvVarSource(obj: EnvVarSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - configMapKeyRef: toJson_ConfigMapKeySelector(obj.configMapKeyRef), - fieldRef: toJson_ObjectFieldSelector(obj.fieldRef), - resourceFieldRef: toJson_ResourceFieldSelector(obj.resourceFieldRef), - secretKeyRef: toJson_SecretKeySelector(obj.secretKeyRef), + 'configMapKeyRef': toJson_ConfigMapKeySelector(obj.configMapKeyRef), + 'fieldRef': toJson_ObjectFieldSelector(obj.fieldRef), + 'resourceFieldRef': toJson_ResourceFieldSelector(obj.resourceFieldRef), + 'secretKeyRef': toJson_SecretKeySelector(obj.secretKeyRef), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30348,27 +28743,21 @@ export interface ConfigMapEnvSource { * @schema io.k8s.api.core.v1.ConfigMapEnvSource#optional */ readonly optional?: boolean; + } /** * Converts an object of type 'ConfigMapEnvSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ConfigMapEnvSource( - obj: ConfigMapEnvSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ConfigMapEnvSource(obj: ConfigMapEnvSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, - optional: obj.optional, + 'name': obj.name, + 'optional': obj.optional, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30393,27 +28782,21 @@ export interface SecretEnvSource { * @schema io.k8s.api.core.v1.SecretEnvSource#optional */ readonly optional?: boolean; + } /** * Converts an object of type 'SecretEnvSource' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_SecretEnvSource( - obj: SecretEnvSource | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_SecretEnvSource(obj: SecretEnvSource | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, - optional: obj.optional, + 'name': obj.name, + 'optional': obj.optional, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30437,34 +28820,36 @@ export interface LifecycleHandler { */ readonly httpGet?: HttpGetAction; + /** + * Sleep represents the duration that the container should sleep before being terminated. + * + * @schema io.k8s.api.core.v1.LifecycleHandler#sleep + */ + readonly sleep?: SleepAction; + /** * Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. * * @schema io.k8s.api.core.v1.LifecycleHandler#tcpSocket */ readonly tcpSocket?: TcpSocketAction; + } /** * Converts an object of type 'LifecycleHandler' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_LifecycleHandler( - obj: LifecycleHandler | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_LifecycleHandler(obj: LifecycleHandler | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - exec: toJson_ExecAction(obj.exec), - httpGet: toJson_HttpGetAction(obj.httpGet), - tcpSocket: toJson_TcpSocketAction(obj.tcpSocket), + 'exec': toJson_ExecAction(obj.exec), + 'httpGet': toJson_HttpGetAction(obj.httpGet), + 'sleep': toJson_SleepAction(obj.sleep), + 'tcpSocket': toJson_TcpSocketAction(obj.tcpSocket), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30480,26 +28865,20 @@ export interface ExecAction { * @schema io.k8s.api.core.v1.ExecAction#command */ readonly command?: string[]; + } /** * Converts an object of type 'ExecAction' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ExecAction( - obj: ExecAction | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ExecAction(obj: ExecAction | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - command: obj.command?.map((y) => y), + 'command': obj.command?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30522,27 +28901,21 @@ export interface GrpcAction { * @schema io.k8s.api.core.v1.GRPCAction#service */ readonly service?: string; + } /** * Converts an object of type 'GrpcAction' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_GrpcAction( - obj: GrpcAction | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_GrpcAction(obj: GrpcAction | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - port: obj.port, - service: obj.service, + 'port': obj.port, + 'service': obj.service, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30587,30 +28960,24 @@ export interface HttpGetAction { * @schema io.k8s.api.core.v1.HTTPGetAction#scheme */ readonly scheme?: string; + } /** * Converts an object of type 'HttpGetAction' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_HttpGetAction( - obj: HttpGetAction | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_HttpGetAction(obj: HttpGetAction | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - host: obj.host, - httpHeaders: obj.httpHeaders?.map((y) => toJson_HttpHeader(y)), - path: obj.path, - port: obj.port?.value, - scheme: obj.scheme, + 'host': obj.host, + 'httpHeaders': obj.httpHeaders?.map(y => toJson_HttpHeader(y)), + 'path': obj.path, + 'port': obj.port?.value, + 'scheme': obj.scheme, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30633,27 +29000,50 @@ export interface TcpSocketAction { * @schema io.k8s.api.core.v1.TCPSocketAction#port */ readonly port: IntOrString; + } /** * Converts an object of type 'TcpSocketAction' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_TcpSocketAction( - obj: TcpSocketAction | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_TcpSocketAction(obj: TcpSocketAction | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'host': obj.host, + 'port': obj.port?.value, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ResourceClaim references one entry in PodSpec.ResourceClaims. + * + * @schema io.k8s.api.core.v1.ResourceClaim + */ +export interface ResourceClaim { + /** + * Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + * + * @schema io.k8s.api.core.v1.ResourceClaim#name + */ + readonly name: string; + +} + +/** + * Converts an object of type 'ResourceClaim' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ResourceClaim(obj: ResourceClaim | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - host: obj.host, - port: obj.port?.value, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30676,27 +29066,21 @@ export interface Capabilities { * @schema io.k8s.api.core.v1.Capabilities#drop */ readonly drop?: string[]; + } /** * Converts an object of type 'Capabilities' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_Capabilities( - obj: Capabilities | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_Capabilities(obj: Capabilities | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - add: obj.add?.map((y) => y), - drop: obj.drop?.map((y) => y), + 'add': obj.add?.map(y => y), + 'drop': obj.drop?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30726,28 +29110,22 @@ export interface KeyToPath { * @schema io.k8s.api.core.v1.KeyToPath#path */ readonly path: string; + } /** * Converts an object of type 'KeyToPath' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_KeyToPath( - obj: KeyToPath | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_KeyToPath(obj: KeyToPath | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - key: obj.key, - mode: obj.mode, - path: obj.path, + 'key': obj.key, + 'mode': obj.mode, + 'path': obj.path, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30784,29 +29162,23 @@ export interface DownwardApiVolumeFile { * @schema io.k8s.api.core.v1.DownwardAPIVolumeFile#resourceFieldRef */ readonly resourceFieldRef?: ResourceFieldSelector; + } /** * Converts an object of type 'DownwardApiVolumeFile' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_DownwardApiVolumeFile( - obj: DownwardApiVolumeFile | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_DownwardApiVolumeFile(obj: DownwardApiVolumeFile | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - fieldRef: toJson_ObjectFieldSelector(obj.fieldRef), - mode: obj.mode, - path: obj.path, - resourceFieldRef: toJson_ResourceFieldSelector(obj.resourceFieldRef), + 'fieldRef': toJson_ObjectFieldSelector(obj.fieldRef), + 'mode': obj.mode, + 'path': obj.path, + 'resourceFieldRef': toJson_ResourceFieldSelector(obj.resourceFieldRef), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30829,27 +29201,21 @@ export interface PersistentVolumeClaimTemplate { * @schema io.k8s.api.core.v1.PersistentVolumeClaimTemplate#spec */ readonly spec: PersistentVolumeClaimSpec; + } /** * Converts an object of type 'PersistentVolumeClaimTemplate' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_PersistentVolumeClaimTemplate( - obj: PersistentVolumeClaimTemplate | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_PersistentVolumeClaimTemplate(obj: PersistentVolumeClaimTemplate | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - metadata: toJson_ObjectMeta(obj.metadata), - spec: toJson_PersistentVolumeClaimSpec(obj.spec), + 'metadata': toJson_ObjectMeta(obj.metadata), + 'spec': toJson_PersistentVolumeClaimSpec(obj.spec), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -30859,6 +29225,19 @@ export function toJson_PersistentVolumeClaimTemplate( * @schema io.k8s.api.core.v1.VolumeProjection */ export interface VolumeProjection { + /** + * ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field of ClusterTrustBundle objects in an auto-updating file. + * + * Alpha, gated by the ClusterTrustBundleProjection feature gate. + * + * ClusterTrustBundle objects can either be selected by name, or by the combination of signer name and a label selector. + * + * Kubelet performs aggressive normalization of the PEM contents written into the pod filesystem. Esoteric PEM features such as inter-block comments and block headers are stripped. Certificates are deduplicated. The ordering of certificates within the file is arbitrary, and Kubelet may change the order over time. + * + * @schema io.k8s.api.core.v1.VolumeProjection#clusterTrustBundle + */ + readonly clusterTrustBundle?: ClusterTrustBundleProjection; + /** * configMap information about the configMap data to project * @@ -30886,195 +29265,69 @@ export interface VolumeProjection { * @schema io.k8s.api.core.v1.VolumeProjection#serviceAccountToken */ readonly serviceAccountToken?: ServiceAccountTokenProjection; -} - -/** - * Converts an object of type 'VolumeProjection' to JSON representation. - */ -/* eslint-disable max-len, quote-props */ -export function toJson_VolumeProjection( - obj: VolumeProjection | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } - const result = { - configMap: toJson_ConfigMapProjection(obj.configMap), - downwardAPI: toJson_DownwardApiProjection(obj.downwardApi), - secret: toJson_SecretProjection(obj.secret), - serviceAccountToken: toJson_ServiceAccountTokenProjection( - obj.serviceAccountToken, - ), - }; - // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); -} -/* eslint-enable max-len, quote-props */ - -/** - * GroupSubject holds detailed information for group-kind subject. - * - * @schema io.k8s.api.flowcontrol.v1beta2.GroupSubject - */ -export interface GroupSubjectV1Beta2 { - /** - * name is the user group that matches, or "*" to match all user groups. See https://github.com/kubernetes/apiserver/blob/master/pkg/authentication/user/user.go for some well-known group names. Required. - * - * @schema io.k8s.api.flowcontrol.v1beta2.GroupSubject#name - */ - readonly name: string; -} - -/** - * Converts an object of type 'GroupSubjectV1Beta2' to JSON representation. - */ -/* eslint-disable max-len, quote-props */ -export function toJson_GroupSubjectV1Beta2( - obj: GroupSubjectV1Beta2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } - const result = { - name: obj.name, - }; - // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); -} -/* eslint-enable max-len, quote-props */ - -/** - * ServiceAccountSubject holds detailed information for service-account-kind subject. - * - * @schema io.k8s.api.flowcontrol.v1beta2.ServiceAccountSubject - */ -export interface ServiceAccountSubjectV1Beta2 { - /** - * `name` is the name of matching ServiceAccount objects, or "*" to match regardless of name. Required. - * - * @schema io.k8s.api.flowcontrol.v1beta2.ServiceAccountSubject#name - */ - readonly name: string; - - /** - * `namespace` is the namespace of matching ServiceAccount objects. Required. - * - * @schema io.k8s.api.flowcontrol.v1beta2.ServiceAccountSubject#namespace - */ - readonly namespace: string; -} - -/** - * Converts an object of type 'ServiceAccountSubjectV1Beta2' to JSON representation. - */ -/* eslint-disable max-len, quote-props */ -export function toJson_ServiceAccountSubjectV1Beta2( - obj: ServiceAccountSubjectV1Beta2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } - const result = { - name: obj.name, - namespace: obj.namespace, - }; - // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); -} -/* eslint-enable max-len, quote-props */ -/** - * UserSubject holds detailed information for user-kind subject. - * - * @schema io.k8s.api.flowcontrol.v1beta2.UserSubject - */ -export interface UserSubjectV1Beta2 { - /** - * `name` is the username that matches, or "*" to match all usernames. Required. - * - * @schema io.k8s.api.flowcontrol.v1beta2.UserSubject#name - */ - readonly name: string; } /** - * Converts an object of type 'UserSubjectV1Beta2' to JSON representation. + * Converts an object of type 'VolumeProjection' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_UserSubjectV1Beta2( - obj: UserSubjectV1Beta2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_VolumeProjection(obj: VolumeProjection | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, + 'clusterTrustBundle': toJson_ClusterTrustBundleProjection(obj.clusterTrustBundle), + 'configMap': toJson_ConfigMapProjection(obj.configMap), + 'downwardAPI': toJson_DownwardApiProjection(obj.downwardApi), + 'secret': toJson_SecretProjection(obj.secret), + 'serviceAccountToken': toJson_ServiceAccountTokenProjection(obj.serviceAccountToken), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ /** * QueuingConfiguration holds the configuration parameters for queuing * - * @schema io.k8s.api.flowcontrol.v1beta2.QueuingConfiguration + * @schema io.k8s.api.flowcontrol.v1.QueuingConfiguration */ -export interface QueuingConfigurationV1Beta2 { +export interface QueuingConfiguration { /** * `handSize` is a small positive number that configures the shuffle sharding of requests into queues. When enqueuing a request at this priority level the request's flow identifier (a string pair) is hashed and the hash value is used to shuffle the list of queues and deal a hand of the size specified here. The request is put into one of the shortest queues in that hand. `handSize` must be no larger than `queues`, and should be significantly smaller (so that a few heavy flows do not saturate most of the queues). See the user-facing documentation for more extensive guidance on setting this field. This field has a default value of 8. * - * @schema io.k8s.api.flowcontrol.v1beta2.QueuingConfiguration#handSize + * @schema io.k8s.api.flowcontrol.v1.QueuingConfiguration#handSize */ readonly handSize?: number; /** * `queueLengthLimit` is the maximum number of requests allowed to be waiting in a given queue of this priority level at a time; excess requests are rejected. This value must be positive. If not specified, it will be defaulted to 50. * - * @schema io.k8s.api.flowcontrol.v1beta2.QueuingConfiguration#queueLengthLimit + * @schema io.k8s.api.flowcontrol.v1.QueuingConfiguration#queueLengthLimit */ readonly queueLengthLimit?: number; /** * `queues` is the number of queues for this priority level. The queues exist independently at each apiserver. The value must be positive. Setting it to 1 effectively precludes shufflesharding and thus makes the distinguisher method of associated flow schemas irrelevant. This field has a default value of 64. * - * @schema io.k8s.api.flowcontrol.v1beta2.QueuingConfiguration#queues + * @schema io.k8s.api.flowcontrol.v1.QueuingConfiguration#queues */ readonly queues?: number; + } /** - * Converts an object of type 'QueuingConfigurationV1Beta2' to JSON representation. + * Converts an object of type 'QueuingConfiguration' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_QueuingConfigurationV1Beta2( - obj: QueuingConfigurationV1Beta2 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_QueuingConfiguration(obj: QueuingConfiguration | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - handSize: obj.handSize, - queueLengthLimit: obj.queueLengthLimit, - queues: obj.queues, + 'handSize': obj.handSize, + 'queueLengthLimit': obj.queueLengthLimit, + 'queues': obj.queues, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -31090,26 +29343,20 @@ export interface GroupSubjectV1Beta3 { * @schema io.k8s.api.flowcontrol.v1beta3.GroupSubject#name */ readonly name: string; + } /** * Converts an object of type 'GroupSubjectV1Beta3' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_GroupSubjectV1Beta3( - obj: GroupSubjectV1Beta3 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_GroupSubjectV1Beta3(obj: GroupSubjectV1Beta3 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -31132,27 +29379,21 @@ export interface ServiceAccountSubjectV1Beta3 { * @schema io.k8s.api.flowcontrol.v1beta3.ServiceAccountSubject#namespace */ readonly namespace: string; + } /** * Converts an object of type 'ServiceAccountSubjectV1Beta3' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ServiceAccountSubjectV1Beta3( - obj: ServiceAccountSubjectV1Beta3 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ServiceAccountSubjectV1Beta3(obj: ServiceAccountSubjectV1Beta3 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, - namespace: obj.namespace, + 'name': obj.name, + 'namespace': obj.namespace, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -31168,26 +29409,20 @@ export interface UserSubjectV1Beta3 { * @schema io.k8s.api.flowcontrol.v1beta3.UserSubject#name */ readonly name: string; + } /** * Converts an object of type 'UserSubjectV1Beta3' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_UserSubjectV1Beta3( - obj: UserSubjectV1Beta3 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_UserSubjectV1Beta3(obj: UserSubjectV1Beta3 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, + 'name': obj.name, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -31217,28 +29452,22 @@ export interface QueuingConfigurationV1Beta3 { * @schema io.k8s.api.flowcontrol.v1beta3.QueuingConfiguration#queues */ readonly queues?: number; + } /** * Converts an object of type 'QueuingConfigurationV1Beta3' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_QueuingConfigurationV1Beta3( - obj: QueuingConfigurationV1Beta3 | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_QueuingConfigurationV1Beta3(obj: QueuingConfigurationV1Beta3 | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - handSize: obj.handSize, - queueLengthLimit: obj.queueLengthLimit, - queues: obj.queues, + 'handSize': obj.handSize, + 'queueLengthLimit': obj.queueLengthLimit, + 'queues': obj.queues, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -31261,27 +29490,21 @@ export interface ServiceBackendPort { * @schema io.k8s.api.networking.v1.ServiceBackendPort#number */ readonly number?: number; + } /** * Converts an object of type 'ServiceBackendPort' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ServiceBackendPort( - obj: ServiceBackendPort | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ServiceBackendPort(obj: ServiceBackendPort | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, - number: obj.number, + 'name': obj.name, + 'number': obj.number, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -31321,28 +29544,22 @@ export interface HttpIngressPath { * @schema io.k8s.api.networking.v1.HTTPIngressPath#pathType */ readonly pathType: string; + } /** * Converts an object of type 'HttpIngressPath' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_HttpIngressPath( - obj: HttpIngressPath | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_HttpIngressPath(obj: HttpIngressPath | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - backend: toJson_IngressBackend(obj.backend), - path: obj.path, - pathType: obj.pathType, + 'backend': toJson_IngressBackend(obj.backend), + 'path': obj.path, + 'pathType': obj.pathType, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -31365,27 +29582,21 @@ export interface IpBlock { * @schema io.k8s.api.networking.v1.IPBlock#except */ readonly except?: string[]; + } /** * Converts an object of type 'IpBlock' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_IpBlock( - obj: IpBlock | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_IpBlock(obj: IpBlock | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - cidr: obj.cidr, - except: obj.except?.map((y) => y), + 'cidr': obj.cidr, + 'except': obj.except?.map(y => y), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -31668,105 +29879,63 @@ export interface JsonSchemaProps { * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps#x-kubernetes-validations */ readonly xKubernetesValidations?: ValidationRule[]; + } /** * Converts an object of type 'JsonSchemaProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_JsonSchemaProps( - obj: JsonSchemaProps | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } - const result = { - $ref: obj.ref, - $schema: obj.schema, - additionalItems: obj.additionalItems, - additionalProperties: obj.additionalProperties, - allOf: obj.allOf?.map((y) => toJson_JsonSchemaProps(y)), - anyOf: obj.anyOf?.map((y) => toJson_JsonSchemaProps(y)), - default: obj.default, - definitions: - obj.definitions === undefined - ? undefined - : Object.entries(obj.definitions).reduce( - (r, i) => - i[1] === undefined - ? r - : { ...r, [i[0]]: toJson_JsonSchemaProps(i[1]) }, - {}, - ), - dependencies: - obj.dependencies === undefined - ? undefined - : Object.entries(obj.dependencies).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ), - description: obj.description, - enum: obj.enum?.map((y) => y), - example: obj.example, - exclusiveMaximum: obj.exclusiveMaximum, - exclusiveMinimum: obj.exclusiveMinimum, - externalDocs: toJson_ExternalDocumentation(obj.externalDocs), - format: obj.format, - id: obj.id, - items: obj.items, - maxItems: obj.maxItems, - maxLength: obj.maxLength, - maxProperties: obj.maxProperties, - maximum: obj.maximum, - minItems: obj.minItems, - minLength: obj.minLength, - minProperties: obj.minProperties, - minimum: obj.minimum, - multipleOf: obj.multipleOf, - not: toJson_JsonSchemaProps(obj.not), - nullable: obj.nullable, - oneOf: obj.oneOf?.map((y) => toJson_JsonSchemaProps(y)), - pattern: obj.pattern, - patternProperties: - obj.patternProperties === undefined - ? undefined - : Object.entries(obj.patternProperties).reduce( - (r, i) => - i[1] === undefined - ? r - : { ...r, [i[0]]: toJson_JsonSchemaProps(i[1]) }, - {}, - ), - properties: - obj.properties === undefined - ? undefined - : Object.entries(obj.properties).reduce( - (r, i) => - i[1] === undefined - ? r - : { ...r, [i[0]]: toJson_JsonSchemaProps(i[1]) }, - {}, - ), - required: obj.required?.map((y) => y), - title: obj.title, - type: obj.type, - uniqueItems: obj.uniqueItems, - "x-kubernetes-embedded-resource": obj.xKubernetesEmbeddedResource, - "x-kubernetes-int-or-string": obj.xKubernetesIntOrString, - "x-kubernetes-list-map-keys": obj.xKubernetesListMapKeys?.map((y) => y), - "x-kubernetes-list-type": obj.xKubernetesListType, - "x-kubernetes-map-type": obj.xKubernetesMapType, - "x-kubernetes-preserve-unknown-fields": - obj.xKubernetesPreserveUnknownFields, - "x-kubernetes-validations": obj.xKubernetesValidations?.map((y) => - toJson_ValidationRule(y), - ), - }; - // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); +export function toJson_JsonSchemaProps(obj: JsonSchemaProps | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + '$ref': obj.ref, + '$schema': obj.schema, + 'additionalItems': obj.additionalItems, + 'additionalProperties': obj.additionalProperties, + 'allOf': obj.allOf?.map(y => toJson_JsonSchemaProps(y)), + 'anyOf': obj.anyOf?.map(y => toJson_JsonSchemaProps(y)), + 'default': obj.default, + 'definitions': ((obj.definitions) === undefined) ? undefined : (Object.entries(obj.definitions).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: toJson_JsonSchemaProps(i[1]) }), {})), + 'dependencies': ((obj.dependencies) === undefined) ? undefined : (Object.entries(obj.dependencies).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {})), + 'description': obj.description, + 'enum': obj.enum?.map(y => y), + 'example': obj.example, + 'exclusiveMaximum': obj.exclusiveMaximum, + 'exclusiveMinimum': obj.exclusiveMinimum, + 'externalDocs': toJson_ExternalDocumentation(obj.externalDocs), + 'format': obj.format, + 'id': obj.id, + 'items': obj.items, + 'maxItems': obj.maxItems, + 'maxLength': obj.maxLength, + 'maxProperties': obj.maxProperties, + 'maximum': obj.maximum, + 'minItems': obj.minItems, + 'minLength': obj.minLength, + 'minProperties': obj.minProperties, + 'minimum': obj.minimum, + 'multipleOf': obj.multipleOf, + 'not': toJson_JsonSchemaProps(obj.not), + 'nullable': obj.nullable, + 'oneOf': obj.oneOf?.map(y => toJson_JsonSchemaProps(y)), + 'pattern': obj.pattern, + 'patternProperties': ((obj.patternProperties) === undefined) ? undefined : (Object.entries(obj.patternProperties).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: toJson_JsonSchemaProps(i[1]) }), {})), + 'properties': ((obj.properties) === undefined) ? undefined : (Object.entries(obj.properties).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: toJson_JsonSchemaProps(i[1]) }), {})), + 'required': obj.required?.map(y => y), + 'title': obj.title, + 'type': obj.type, + 'uniqueItems': obj.uniqueItems, + 'x-kubernetes-embedded-resource': obj.xKubernetesEmbeddedResource, + 'x-kubernetes-int-or-string': obj.xKubernetesIntOrString, + 'x-kubernetes-list-map-keys': obj.xKubernetesListMapKeys?.map(y => y), + 'x-kubernetes-list-type': obj.xKubernetesListType, + 'x-kubernetes-map-type': obj.xKubernetesMapType, + 'x-kubernetes-preserve-unknown-fields': obj.xKubernetesPreserveUnknownFields, + 'x-kubernetes-validations': obj.xKubernetesValidations?.map(y => toJson_ValidationRule(y)), + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -31796,28 +29965,22 @@ export interface CustomResourceSubresourceScale { * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceScale#statusReplicasPath */ readonly statusReplicasPath: string; + } /** * Converts an object of type 'CustomResourceSubresourceScale' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_CustomResourceSubresourceScale( - obj: CustomResourceSubresourceScale | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_CustomResourceSubresourceScale(obj: CustomResourceSubresourceScale | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - labelSelectorPath: obj.labelSelectorPath, - specReplicasPath: obj.specReplicasPath, - statusReplicasPath: obj.statusReplicasPath, + 'labelSelectorPath': obj.labelSelectorPath, + 'specReplicasPath': obj.specReplicasPath, + 'statusReplicasPath': obj.statusReplicasPath, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -31847,28 +30010,22 @@ export interface ConfigMapKeySelector { * @schema io.k8s.api.core.v1.ConfigMapKeySelector#optional */ readonly optional?: boolean; + } /** * Converts an object of type 'ConfigMapKeySelector' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ConfigMapKeySelector( - obj: ConfigMapKeySelector | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ConfigMapKeySelector(obj: ConfigMapKeySelector | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - key: obj.key, - name: obj.name, - optional: obj.optional, + 'key': obj.key, + 'name': obj.name, + 'optional': obj.optional, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -31891,27 +30048,21 @@ export interface ObjectFieldSelector { * @schema io.k8s.api.core.v1.ObjectFieldSelector#fieldPath */ readonly fieldPath: string; + } /** * Converts an object of type 'ObjectFieldSelector' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ObjectFieldSelector( - obj: ObjectFieldSelector | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ObjectFieldSelector(obj: ObjectFieldSelector | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - apiVersion: obj.apiVersion, - fieldPath: obj.fieldPath, + 'apiVersion': obj.apiVersion, + 'fieldPath': obj.fieldPath, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -31941,28 +30092,22 @@ export interface ResourceFieldSelector { * @schema io.k8s.api.core.v1.ResourceFieldSelector#resource */ readonly resource: string; + } /** * Converts an object of type 'ResourceFieldSelector' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ResourceFieldSelector( - obj: ResourceFieldSelector | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ResourceFieldSelector(obj: ResourceFieldSelector | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - containerName: obj.containerName, - divisor: obj.divisor?.value, - resource: obj.resource, + 'containerName': obj.containerName, + 'divisor': obj.divisor?.value, + 'resource': obj.resource, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -31992,28 +30137,51 @@ export interface SecretKeySelector { * @schema io.k8s.api.core.v1.SecretKeySelector#optional */ readonly optional?: boolean; + } /** * Converts an object of type 'SecretKeySelector' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_SecretKeySelector( - obj: SecretKeySelector | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_SecretKeySelector(obj: SecretKeySelector | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'key': obj.key, + 'name': obj.name, + 'optional': obj.optional, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * SleepAction describes a "sleep" action. + * + * @schema io.k8s.api.core.v1.SleepAction + */ +export interface SleepAction { + /** + * Seconds is the number of seconds to sleep. + * + * @schema io.k8s.api.core.v1.SleepAction#seconds + */ + readonly seconds: number; + +} + +/** + * Converts an object of type 'SleepAction' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_SleepAction(obj: SleepAction | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - key: obj.key, - name: obj.name, - optional: obj.optional, + 'seconds': obj.seconds, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -32024,7 +30192,7 @@ export function toJson_SecretKeySelector( */ export interface HttpHeader { /** - * The header field name + * The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. * * @schema io.k8s.api.core.v1.HTTPHeader#name */ @@ -32036,27 +30204,82 @@ export interface HttpHeader { * @schema io.k8s.api.core.v1.HTTPHeader#value */ readonly value: string; + } /** * Converts an object of type 'HttpHeader' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_HttpHeader( - obj: HttpHeader | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_HttpHeader(obj: HttpHeader | undefined): Record | undefined { + if (obj === undefined) { return undefined; } + const result = { + 'name': obj.name, + 'value': obj.value, + }; + // filter undefined values + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); +} +/* eslint-enable max-len, quote-props */ + +/** + * ClusterTrustBundleProjection describes how to select a set of ClusterTrustBundle objects and project their contents into the pod filesystem. + * + * @schema io.k8s.api.core.v1.ClusterTrustBundleProjection + */ +export interface ClusterTrustBundleProjection { + /** + * Select all ClusterTrustBundles that match this label selector. Only has effect if signerName is set. Mutually-exclusive with name. If unset, interpreted as "match nothing". If set but empty, interpreted as "match everything". + * + * @schema io.k8s.api.core.v1.ClusterTrustBundleProjection#labelSelector + */ + readonly labelSelector?: LabelSelector; + + /** + * Select a single ClusterTrustBundle by object name. Mutually-exclusive with signerName and labelSelector. + * + * @schema io.k8s.api.core.v1.ClusterTrustBundleProjection#name + */ + readonly name?: string; + + /** + * If true, don't block pod startup if the referenced ClusterTrustBundle(s) aren't available. If using name, then the named ClusterTrustBundle is allowed not to exist. If using signerName, then the combination of signerName and labelSelector is allowed to match zero ClusterTrustBundles. + * + * @schema io.k8s.api.core.v1.ClusterTrustBundleProjection#optional + */ + readonly optional?: boolean; + + /** + * Relative path from the volume root to write the bundle. + * + * @schema io.k8s.api.core.v1.ClusterTrustBundleProjection#path + */ + readonly path: string; + + /** + * Select all ClusterTrustBundles that match this signer name. Mutually-exclusive with name. The contents of all selected ClusterTrustBundles will be unified and deduplicated. + * + * @schema io.k8s.api.core.v1.ClusterTrustBundleProjection#signerName + */ + readonly signerName?: string; + +} + +/** + * Converts an object of type 'ClusterTrustBundleProjection' to JSON representation. + */ +/* eslint-disable max-len, quote-props */ +export function toJson_ClusterTrustBundleProjection(obj: ClusterTrustBundleProjection | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - name: obj.name, - value: obj.value, + 'labelSelector': toJson_LabelSelector(obj.labelSelector), + 'name': obj.name, + 'optional': obj.optional, + 'path': obj.path, + 'signerName': obj.signerName, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -32088,28 +30311,22 @@ export interface ConfigMapProjection { * @schema io.k8s.api.core.v1.ConfigMapProjection#optional */ readonly optional?: boolean; + } /** * Converts an object of type 'ConfigMapProjection' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ConfigMapProjection( - obj: ConfigMapProjection | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ConfigMapProjection(obj: ConfigMapProjection | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - items: obj.items?.map((y) => toJson_KeyToPath(y)), - name: obj.name, - optional: obj.optional, + 'items': obj.items?.map(y => toJson_KeyToPath(y)), + 'name': obj.name, + 'optional': obj.optional, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -32125,26 +30342,20 @@ export interface DownwardApiProjection { * @schema io.k8s.api.core.v1.DownwardAPIProjection#items */ readonly items?: DownwardApiVolumeFile[]; + } /** * Converts an object of type 'DownwardApiProjection' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_DownwardApiProjection( - obj: DownwardApiProjection | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_DownwardApiProjection(obj: DownwardApiProjection | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - items: obj.items?.map((y) => toJson_DownwardApiVolumeFile(y)), + 'items': obj.items?.map(y => toJson_DownwardApiVolumeFile(y)), }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -32176,28 +30387,22 @@ export interface SecretProjection { * @schema io.k8s.api.core.v1.SecretProjection#optional */ readonly optional?: boolean; + } /** * Converts an object of type 'SecretProjection' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_SecretProjection( - obj: SecretProjection | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_SecretProjection(obj: SecretProjection | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - items: obj.items?.map((y) => toJson_KeyToPath(y)), - name: obj.name, - optional: obj.optional, + 'items': obj.items?.map(y => toJson_KeyToPath(y)), + 'name': obj.name, + 'optional': obj.optional, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -32228,28 +30433,22 @@ export interface ServiceAccountTokenProjection { * @schema io.k8s.api.core.v1.ServiceAccountTokenProjection#path */ readonly path: string; + } /** * Converts an object of type 'ServiceAccountTokenProjection' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ServiceAccountTokenProjection( - obj: ServiceAccountTokenProjection | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ServiceAccountTokenProjection(obj: ServiceAccountTokenProjection | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - audience: obj.audience, - expirationSeconds: obj.expirationSeconds, - path: obj.path, + 'audience': obj.audience, + 'expirationSeconds': obj.expirationSeconds, + 'path': obj.path, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -32268,27 +30467,21 @@ export interface ExternalDocumentation { * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ExternalDocumentation#url */ readonly url?: string; + } /** * Converts an object of type 'ExternalDocumentation' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ExternalDocumentation( - obj: ExternalDocumentation | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ExternalDocumentation(obj: ExternalDocumentation | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - description: obj.description, - url: obj.url, + 'description': obj.description, + 'url': obj.url, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ @@ -32298,6 +30491,13 @@ export function toJson_ExternalDocumentation( * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule */ export interface ValidationRule { + /** + * fieldPath represents the field path returned when the validation fails. It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field. e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo` If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList` It does not support list numeric index. It supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info. Numeric index of array is not supported. For field name which contains special characters, use `['specialName']` to refer the field name. e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']` + * + * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule#fieldPath + */ + readonly fieldPath?: string; + /** * Message represents the message displayed when validation fails. The message is required if the Rule contains line breaks. The message must not contain line breaks. If unset, the message is "failed rule: {Rule}". e.g. "must be a URL with the host matching spec.host" * @@ -32312,6 +30512,26 @@ export interface ValidationRule { */ readonly messageExpression?: string; + /** + * optionalOldSelf is used to opt a transition rule into evaluation even when the object is first created, or if the old object is missing the value. + * + * When enabled `oldSelf` will be a CEL optional whose value will be `None` if there is no old value, or when the object is initially created. + * + * You may check for presence of oldSelf using `oldSelf.hasValue()` and unwrap it after checking using `oldSelf.value()`. Check the CEL documentation for Optional types for more information: https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes + * + * May not be set unless `oldSelf` is used in `rule`. + * + * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule#optionalOldSelf + */ + readonly optionalOldSelf?: boolean; + + /** + * reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. The HTTP status code returned to the caller will match the reason of the reason of the first failed validation rule. The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate". If not set, default to use "FieldValueInvalid". All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid. + * + * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule#reason + */ + readonly reason?: string; + /** * Rule represents the expression which will be evaluated by CEL. ref: https://github.com/google/cel-spec The Rule is scoped to the location of the x-kubernetes-validations extension in the schema. The `self` variable in the CEL expression is bound to the scoped value. Example: - Rule scoped to the root of a resource with a status subresource: {"rule": "self.status.actual <= self.spec.maxDesired"} * @@ -32339,30 +30559,36 @@ export interface ValidationRule { * are overwritten by values in `Y` when the key sets of `X` and `Y` intersect. Elements in `Y` with * non-intersecting keys are appended, retaining their partial order. * + * If `rule` makes use of the `oldSelf` variable it is implicitly a `transition rule`. + * + * By default, the `oldSelf` variable is the same type as `self`. When `optionalOldSelf` is true, the `oldSelf` variable is a CEL optional + * variable whose value() is the same type as `self`. + * See the documentation for the `optionalOldSelf` field for details. + * + * Transition rules by default are applied only on UPDATE requests and are skipped if an old value could not be found. You can opt a transition rule into unconditional evaluation by setting `optionalOldSelf` to true. + * * @schema io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.ValidationRule#rule */ readonly rule: string; + } /** * Converts an object of type 'ValidationRule' to JSON representation. */ /* eslint-disable max-len, quote-props */ -export function toJson_ValidationRule( - obj: ValidationRule | undefined, -): Record | undefined { - if (obj === undefined) { - return undefined; - } +export function toJson_ValidationRule(obj: ValidationRule | undefined): Record | undefined { + if (obj === undefined) { return undefined; } const result = { - message: obj.message, - messageExpression: obj.messageExpression, - rule: obj.rule, + 'fieldPath': obj.fieldPath, + 'message': obj.message, + 'messageExpression': obj.messageExpression, + 'optionalOldSelf': obj.optionalOldSelf, + 'reason': obj.reason, + 'rule': obj.rule, }; // filter undefined values - return Object.entries(result).reduce( - (r, i) => (i[1] === undefined ? r : { ...r, [i[0]]: i[1] }), - {}, - ); + return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } /* eslint-enable max-len, quote-props */ + diff --git a/k8s/jest.config.js b/k8s/jest.config.js index 39c24d9..d2a924e 100644 --- a/k8s/jest.config.js +++ b/k8s/jest.config.js @@ -1,6 +1,7 @@ module.exports = { roots: [""], testMatch: ["**/*.test.ts"], + moduleFileExtensions: ["ts", "js"], transform: { "^.+\\.tsx?$": "ts-jest", }, diff --git a/k8s/kustomization.yaml b/k8s/kustomization.yaml deleted file mode 100644 index 1d09255..0000000 --- a/k8s/kustomization.yaml +++ /dev/null @@ -1,59 +0,0 @@ -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -generatorOptions: - disableNameSuffixHash: true - -secretGenerator: - - name: loc00-application-secret - namespace: "licensing" - envs: - - loc00/application-secret.env - - name: loc00-tls-secret - namespace: "licensing" - type: "kubernetes.io/tls" - files: - - loc00/tls.key - - loc00/tls.crt - - name: loc00-licensing-service-private-key - namespace: "licensing" - files: - - LICENSING_SERVICE_PRIVATE_KEY=loc00/licensing-service.key - - name: loc00-shop-service-private-key - namespace: "licensing" - files: - - SHOP_SERVICE_PRIVATE_KEY=loc00/shop-service.key - - name: loc00-invoice-service-auth-password - namespace: "licensing" - files: - - SHOP_INVOICE_AUTH_PASSWORD=loc00/invoice-service-auth.pwd - - name: loc00-sdwh-postgres-secret - namespace: "licensing" - files: - - SDWH_POSTGRES_SECRET=loc00/sdwh-postgres-secret.pwd - - name: loc00-sdwh-host-private-key - namespace: "licensing" - files: - - SDWH_HOST_PRIVATE_KEY=loc00/sdwh-host-private.key - - name: loc00-sdwh-private-ip - namespace: "licensing" - files: - - SDWH_PRIVATE_IP=loc00/sdwh-private-ip.txt - - name: loc00-data-event-api-secret - namespace: "licensing" - files: - - SDWH_PRIVATE_IP=loc00/data-event-api-secret.txt - -resources: - - dist/ingress-nginx.k8s.yaml - - dist/licensing-config.k8s.yaml - - dist/licensing-service-account.k8s.yaml - -patches: - - target: - kind: Job - namespace: licensing - patch: |- - - op: add - path: /spec/ttlSecondsAfterFinished - value: 60 diff --git a/k8s/lib/charts/event-export-cron-job.ts b/k8s/lib/charts/event-export-cron-job.ts deleted file mode 100644 index 3b60001..0000000 --- a/k8s/lib/charts/event-export-cron-job.ts +++ /dev/null @@ -1,228 +0,0 @@ -import { Chart, ChartProps } from "cdk8s"; -import { Construct } from "constructs"; -import { - EnvFromSource, - JobTemplateSpec, - KubeCronJob, - ResourceRequirements, -} from "../../imports/k8s"; -import { ImagePullPolicy, RestartPolicy } from "cdk8s-plus-27"; -import { NodeSelector } from "../types"; - -interface EventExportProps extends ChartProps { - /** - * Name for resources in this chart - * - * @default event-export - */ - name?: string; - /** - * Name of the secret containing the Backend credentials. - * - * Required key: - * - BM_ENCRYPTION_PASSWORD - */ - backendSecret?: string; - /** - * Name of the config map containing necessary configuration. - * Keys are derived from the type ApplicationConfig - */ - configMap: string; - /** - * Name of the secret containing the Event service API key. - * - * Required key: - * -EVENT_API_SECRET - */ - eventApiSecret?: string; - /** - * Docker image with AWS CLI and kubectl - * - * @see https://hub.docker.com/r/bettermarks/aws-cli-kubectl - */ - image: string; - /** - * The logformat to use. Possible values: "console", "json" - */ - logformat?: string; - /** - * Name of the secret containing the Mongo Atlas Credentials. - * - * Required key: - * - MONGODB_URI - */ - mongoAtlasReadonlySecret?: string; - /** - * Node selector - */ - nodeSelector?: NodeSelector; - /** - * Name of the secret containing Postgres credentials - * - * Required keys: - * - DB_HOST - * - DB_PORT - * - DB_USER - * - DB_PASSWORD - * - DB_NAME - */ - postgresSecret: string; - /** - * Name of the secret containing the SDWH SSH host private key. - * - * Required key: - * - SDWH_HOST_PRIVATE_KEY - */ - sdwhHostPrivateKey?: string; - /** - * Name of the secret containing the SDWH credentials. - * - * Required key: - * - SDWH_PRIVATE_IP - */ - sdwhPrivateIp?: string; - /** - * Name of the secret containing the SDWH readonly user password. - * - * Required key: - * - SDWH_POSTGRES_SECRET - */ - sdwhPostgresSecret?: string; - serviceAccountName: string; - resources?: ResourceRequirements; -} - -/** - * This chart runs the event export as cron job. - */ -export class EventExportCronJob extends Chart { - constructor(scope: Construct, id: string, props: EventExportProps) { - super(scope, id, props); - const { - namespace, - name = "licensing-event-export", - backendSecret, - configMap, - eventApiSecret, - image, - logformat = "console", - mongoAtlasReadonlySecret, - nodeSelector, - postgresSecret, - resources, - serviceAccountName, - sdwhHostPrivateKey, - sdwhPostgresSecret, - sdwhPrivateIp, - } = props; - - const applicationEnv: EnvFromSource[] = [ - { - configMapRef: { - name: configMap, - }, - }, - { - secretRef: { - name: postgresSecret, - }, - }, - ...(sdwhHostPrivateKey - ? [ - { - secretRef: { - name: sdwhHostPrivateKey, - }, - }, - ] - : []), - ...(sdwhPostgresSecret - ? [ - { - secretRef: { - name: sdwhPostgresSecret, - }, - }, - ] - : []), - ...(eventApiSecret - ? [ - { - secretRef: { - name: eventApiSecret, - }, - }, - ] - : []), - ...(backendSecret - ? [ - { - secretRef: { - name: backendSecret, - }, - }, - ] - : []), - ...(mongoAtlasReadonlySecret - ? [ - { - secretRef: { - name: mongoAtlasReadonlySecret, - }, - }, - ] - : []), - ...(sdwhPrivateIp - ? [ - { - secretRef: { - name: sdwhPrivateIp, - }, - }, - ] - : []), - ]; - - const jobTemplate: JobTemplateSpec = { - metadata: { - name, - namespace, - }, - spec: { - suspend: false, - backoffLimit: 1, // retry - ttlSecondsAfterFinished: 600, // delete finished job after 10 min - template: { - spec: { - nodeSelector, - serviceAccountName, - restartPolicy: RestartPolicy.NEVER, - containers: [ - { - name, - image, - imagePullPolicy: ImagePullPolicy.IF_NOT_PRESENT, - resources, - envFrom: applicationEnv, - command: ["python", "src/services/licensing/scripts/export_events.py", "--events-per-run=3000", `--log-format=${logformat}`], - }, - ], - }, - }, - }, - }; - - new KubeCronJob(this, "cronjob", { - metadata: { - name, - namespace, - }, - spec: { - schedule: "*/20 * * * *", - concurrencyPolicy: "Forbid", - jobTemplate, - suspend: false, - }, - }); - } -} diff --git a/k8s/lib/charts/ingress-nginx.ts b/k8s/lib/charts/ingress-nginx.ts deleted file mode 100644 index d5fe7ff..0000000 --- a/k8s/lib/charts/ingress-nginx.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { Chart, ChartProps, Helm } from "cdk8s"; -import { ServiceType } from "cdk8s-plus-27"; -import { TopologySpreadConstraint } from "../../imports/k8s"; -import { Construct } from "constructs"; -import { Namespace, NodeSelector } from "../types"; -import { LICENSING_INGRESS_CLASS } from "../constants"; - -export interface IngressNginxChartProps extends ChartProps { - /** - * Ingress Nginx chart version - * @default 4.3.0 - */ - version?: string; - /** - * Node selector config - */ - nodeSelector?: NodeSelector; - /** - * Replicas - * @default 3 - */ - replicas?: number; - /** - * TLS secret - */ - tlsSecret?: string; -} - -/** - * Deploys Nginx Ingress controller - * - * Following defaults are set for resources: - * - controller.resources.requests.cpu : "100m" - * - controller.resources.requests.memory: "90Mi" - */ -export class IngressNginxChart extends Chart { - constructor(scope: Construct, id: string, props: IngressNginxChartProps) { - super(scope, id, props); - - const { - version = "4.4.2", - namespace = Namespace.LICENSING, - nodeSelector, - replicas = 3, - tlsSecret, - } = props; - - /** - * TLS configuration for local dev - */ - let extraArgs = {}; - if (tlsSecret) { - extraArgs = { "default-ssl-certificate": `${namespace}/${tlsSecret}` }; - } - - /** - * Node selector and topology spread constraints - */ - let topologySpreadConstraints: TopologySpreadConstraint[] = []; - if (nodeSelector && Object.keys(nodeSelector).length > 0) { - topologySpreadConstraints = [ - { - maxSkew: 1, - topologyKey: "kubernetes.io/hostname", - whenUnsatisfiable: "DoNotSchedule", - labelSelector: { - matchLabels: { - app: "nginx-controller", - }, - }, - }, - ]; - } - - new Helm(this, "ingress-nginx", { - chart: "ingress-nginx", - releaseName: "ingress-nginx", - helmFlags: [ - "--repo", - "https://kubernetes.github.io/ingress-nginx", - "--version", - version, - "--namespace", - namespace, - ], - values: { - controller: { - ingressClassResource: { - name: LICENSING_INGRESS_CLASS, - controllerValue: `k8s.io/${LICENSING_INGRESS_CLASS}`, - }, - service: { - type: ServiceType.CLUSTER_IP, - }, - config: { - "use-forwarded-headers": true, - "log-format-escape-json": true, - "log-format-upstream": - '{ "timestamp": "$time_iso8601", "nginx": {"x_forwarded_proto": "$http_x_forwarded_proto", "x_forwarded_for": "$proxy_add_x_forwarded_for", "remote_addr": "$remote_addr", "remote_user": "$remote_user", "status": "$status", "body_bytes_sent": $body_bytes_sent, "request": "$request", "request_length": $request_length, "request_method": "$request_method", "request_time": $request_time, "http_referrer": "$http_referer", "http_user_agent": "$http_user_agent", "upstream_connect_time": $upstream_connect_time, "upstream_response_time": $upstream_response_time, "upstream_bytes_sent": $upstream_bytes_sent, "upstream_bytes_received": $upstream_bytes_received, "upstream_status": "$upstream_status", "upstream_server": "$upstream_addr", "host": "$host", "cf_ray": "$http_cf_ray", "request_id": "$request_id" } }', - "worker-processes": "auto", - }, - replica: replicas, - nodeSelector: nodeSelector, - labels: { - app: "nginx-controller", - }, - ...(topologySpreadConstraints.length > 0 && { - topologySpreadConstraints: topologySpreadConstraints, - }), - extraArgs, - }, - }, - }); - } -} diff --git a/k8s/lib/charts/licensing.ts b/k8s/lib/charts/licensing.ts deleted file mode 100644 index 0c7dde3..0000000 --- a/k8s/lib/charts/licensing.ts +++ /dev/null @@ -1,210 +0,0 @@ -import { Chart, ChartProps } from "cdk8s"; -import { HttpIngressPathType, ImagePullPolicy } from "cdk8s-plus-27"; -import { Construct } from "constructs"; -import { - EnvFromSource, - IntOrString, - KubeIngress, - ResourceRequirements, -} from "../../imports/k8s"; -import { LICENSING_INGRESS_CLASS } from "../constants"; - -import { LicensingService } from "../services/licensing-service"; -import { Namespace, NodeSelector, Segment } from "../types"; - -/** - * This class is the implementation detail of Licensing deployment. - */ -export type LicensingChartProps = ChartProps & { - /** - * Docker image for Licensing - */ - image: string; - /** - * Name of the secret containing Postgres credentials - * - * Required keys: - * - DB_HOST - * - DB_PORT - * - DB_USER - * - DB_PASSWORD - * - DB_NAME - */ - postgresSecret: string; - /** - * Name of the secret containing necessary credentials for running the service. - * - * Required keys: - * - APM_SECRET_TOKEN - * - LICENSING_SERVICE_KID - * - SHOP_SERVICE_KID (will be outsourced to shop service) - * - SHOP_INVOICE_AUTH_PASSWORD (will be outsourced to shop service) - */ - applicationSecret?: string; - /** - * Name of the secret containing the licensing service private key. - * - * Required key: - * - LICENSING_SERVICE_PRIVATE_KEY - */ - licensingServicePrivateKey?: string; - /** - * Name of the secret containing the shop service private key. - * - * Required key: - * - SHOP_SERVICE_PRIVATE_KEY - */ - shopServicePrivateKey?: string; - serviceAccountName: string; - segment: Segment; - name: string; - /** - * Name of the config map containing necessary configuration. - * Keys are derived from the type ApplicationConfig - */ - configMap: string; - nodeSelector?: NodeSelector; - apiResources?: ResourceRequirements; - /** - * API replicas - * @default 3 - */ - apiReplicas?: number; -}; - -/** - * Deploys Licensing server. - */ -export class LicensingChart extends Chart { - constructor(scope: Construct, id: string, props: LicensingChartProps) { - super(scope, id, props); - - const { - namespace = Namespace.LICENSING, - apiReplicas = 1, - apiResources, - applicationSecret, - licensingServicePrivateKey, - shopServicePrivateKey, - image, - nodeSelector, - postgresSecret, - segment, - serviceAccountName, - name, - configMap, - } = props; - - const applicationEnv: EnvFromSource[] = [ - { - configMapRef: { - name: configMap, - }, - }, - { - secretRef: { - name: postgresSecret, - }, - }, - { - secretRef: { - name: licensingServicePrivateKey, - }, - }, - { - secretRef: { - name: shopServicePrivateKey, - }, - }, - ...(applicationSecret - ? [ - { - secretRef: { - name: applicationSecret, - }, - }, - ] - : []), - ]; - - const apiName = `${name}-api`; - const licensingService = new LicensingService(this, `${apiName}-service`, { - name: apiName, - namespace, - replicas: apiReplicas, - serviceAccountName, - nodeSelector: nodeSelector, - initContainers: [], - containers: [ - { - name: apiName, - image, - imagePullPolicy: ImagePullPolicy.IF_NOT_PRESENT, - ports: [ - { - containerPort: 8000, - }, - ], - resources: apiResources, - envFrom: applicationEnv, - readinessProbe: { - httpGet: { - port: IntOrString.fromNumber(8000), - path: "/v1/status", - }, - initialDelaySeconds: 10, - }, - livenessProbe: { - httpGet: { - port: IntOrString.fromNumber(8000), - path: "/v1/status", - }, - initialDelaySeconds: 10, - }, - }, - ], - servicePort: 80, - containerPort: 8000, - }); - - if (segment === Segment.LOC00) { - /** - * Create ingress - */ - new KubeIngress(this, `${name}-ingress`, { - metadata: { - name: `${name}-ingress`, - namespace, - annotations: { - "nginx.ingress.kubernetes.io/enable-cors": "true", - "nginx.ingress.kubernetes.io/cors-allow-origin": - "https://apps.bettermarks.loc", - }, - }, - spec: { - ingressClassName: LICENSING_INGRESS_CLASS, - rules: [ - { - http: { - paths: [ - { - path: "/", - pathType: HttpIngressPathType.PREFIX, - backend: { - service: { - name: licensingService.service!.name, - port: { - number: 80, - }, - }, - }, - }, - ], - }, - }, - ], - }, - }); - } - } -} diff --git a/k8s/lib/common/config.ts b/k8s/lib/common/config.ts new file mode 100644 index 0000000..042372b --- /dev/null +++ b/k8s/lib/common/config.ts @@ -0,0 +1,460 @@ +import { Quantity } from "../../imports/k8s"; +import { + ApplicationConfig, + DeploymentConfig, + LogLevel, + Segment, +} from "../types"; + +/** + * Information to go in secrets + * + * DB related: + * - DB_HOST + * - DB_PORT + * - DB_USER + * - DB_PASSWORD + * - DB_NAME + * + * Application related: + * - APM_SECRET_TOKEN + * - LICENSING_SERVICE_KID + * - LICENSING_SERVICE_PRIVATE_KEY + * + * Bettermarks event export related: + * - MONGODB_URI + * - BM_ENCRYPTION_PASSWORD + * - DATA_EVENT_API_SECRET + * - SDWH_POSTGRES_SECRET + * - SDWH_PRIVATE_IP + * - SDWH_HOST_PRIVATE_KEY + /** + * Information to go in config map + */ +export const APPLICATION_CONFIG: { [key: string]: ApplicationConfig } = { + [Segment.LOC00]: { + SEGMENT: Segment.LOC00, + LOG_FORMAT: "console", + LOG_LEVEL: LogLevel.DEBUG, + LICENSING_SERVICE_URL: "https://licensing.bettermarks.loc", + EVENTS_EXPORT_FUNCTION: + "services.licensing.export.mock_export.export_event", + APM_URL: "", + APM_ENABLED: false, + APM_TRANSACTION_SAMPLE_RATE: "0.1", + JWT_VERIFICATION_KEYS: { + "3e94b29d-c4fe-4f19-b627-dcb62f112a01": { + format: "pem", + desc: "used as public (EC) JWS signature key OF shop service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPRHRuf4kEGKdYllznwF2w4T6K954\n/ltQbQZmzqDZ6WVhtfGm0ncQyv58E/uIu5UAYl55Nzprhbi+5leVyFsnaQ==\n-----END PUBLIC KEY-----\n", + }, + "8a210c1b-1020-4835-a0c5-2c0b31c90095": { + format: "pem", + desc: "used as public (EC) JWS signature key OF hierarchy provider", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpZa2khO++tAJJWjWXSWVnZ1wGl9P\nQajoLhpNGJGWJmFy4+lYyMC9g/R3ZaoAjYXwbOi2tNl4ROYqWsZGEvmgig==\n-----END PUBLIC KEY-----\n", + }, + "9aac3057-e492-448e-90bf-1404124056b0": { + format: "pem", + desc: "used as public (EC) JWS signature key OF ordering service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEldVFYtN5IffED9PrPRHBwFmXHYWK\ngz9Inj/8651FRWekYyWvkdrvWkNRj5OLOpqtWRXFnRjqdxgeUPPJduajLQ==\n-----END PUBLIC KEY-----\n", + }, + "d31c2005-cd17-4dd3-93fc-0bc07c4318da": { + format: "pem", + desc: "used as public (EC) JWS signature key OF backoffice service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzSUdN8X3yf6V4NdhCHsP2mQdcZKA\n+uJWbcPr8YDjBDK4VOCaYm+WV3ce1yKFgqmXYZZEIdz5XIIPw7/zNdiJLQ==\n-----END PUBLIC KEY-----\n", + }, + }, + }, + [Segment.DEV00]: { + SEGMENT: Segment.DEV00, + LOG_FORMAT: "json", + LOG_LEVEL: LogLevel.INFO, + LICENSING_SERVICE_URL: "https://licensing-dev00.bettermarks.com", + APM_URL: "https://apm.bettermarks.com", + APM_ENABLED: true, + APM_TRANSACTION_SAMPLE_RATE: "0.1", + JWT_VERIFICATION_KEYS: { + "6a8913b1-8e57-436a-9551-0165b5ceaadc": { + format: "pem", + desc: "used as public (EC) JWS signature key OF shop service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECK+vuevrAWEJ/pXBlPMfhxlFjT7S\nXX7f8xxa/6T1xuEBXRlaDI/pNWdHHkeFgoM/QOOX8N3gXI32h/J164lnJw==\n-----END PUBLIC KEY-----\n", + }, + "deb57535-a9b6-437c-8ab0-edd24e888d24": { + format: "pem", + desc: "used as public (EC) JWS signature key OF hierarchy provider", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUjGuzKKQf098S+FfEJyw81Bt1z0B\nS5sg2jF0b+tKGRiW4L/6wwLeXxsrCb4192gVxorIarb17o80BTGmMeaNEw==\n-----END PUBLIC KEY-----\n", + }, + "9aac3057-e492-448e-90bf-1404124056b0": { + format: "pem", + desc: "used as public (EC) JWS signature key OF ordering service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEldVFYtN5IffED9PrPRHBwFmXHYWK\ngz9Inj/8651FRWekYyWvkdrvWkNRj5OLOpqtWRXFnRjqdxgeUPPJduajLQ==\n-----END PUBLIC KEY-----\n", + }, + "cd07ca32-7d99-44c9-823e-e6103942767e": { + format: "pem", + desc: "used as public (EC) JWS signature key OF backoffice service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3ETb4eEvUXQB9zvpfe3z0slDZ+0c\nF2q3Eb1YTfCnaqE7eHPZ/4SKiwv8TojzJr3+/cImjqFkD4Xie0POo9wLfg==\n-----END PUBLIC KEY-----\n", + }, + }, + }, + [Segment.DEV01]: { + SEGMENT: Segment.DEV01, + LOG_FORMAT: "json", + LOG_LEVEL: LogLevel.INFO, + LICENSING_SERVICE_URL: "https://licensing-dev01.bettermarks.com", + APM_URL: "https://apm.bettermarks.com", + APM_ENABLED: true, + APM_TRANSACTION_SAMPLE_RATE: "0.1", + JWT_VERIFICATION_KEYS: { + "6a8913b1-8e57-436a-9551-0165b5ceaadc": { + format: "pem", + desc: "used as public (EC) JWS signature key OF shop service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECK+vuevrAWEJ/pXBlPMfhxlFjT7S\nXX7f8xxa/6T1xuEBXRlaDI/pNWdHHkeFgoM/QOOX8N3gXI32h/J164lnJw==\n-----END PUBLIC KEY-----\n", + }, + "deb57535-a9b6-437c-8ab0-edd24e888d24": { + format: "pem", + desc: "used as public (EC) JWS signature key OF hierarchy provider", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUjGuzKKQf098S+FfEJyw81Bt1z0B\nS5sg2jF0b+tKGRiW4L/6wwLeXxsrCb4192gVxorIarb17o80BTGmMeaNEw==\n-----END PUBLIC KEY-----\n", + }, + "9aac3057-e492-448e-90bf-1404124056b0": { + format: "pem", + desc: "used as public (EC) JWS signature key OF ordering service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEldVFYtN5IffED9PrPRHBwFmXHYWK\ngz9Inj/8651FRWekYyWvkdrvWkNRj5OLOpqtWRXFnRjqdxgeUPPJduajLQ==\n-----END PUBLIC KEY-----\n", + }, + "cd07ca32-7d99-44c9-823e-e6103942767e": { + format: "pem", + desc: "used as public (EC) JWS signature key OF backoffice service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3ETb4eEvUXQB9zvpfe3z0slDZ+0c\nF2q3Eb1YTfCnaqE7eHPZ/4SKiwv8TojzJr3+/cImjqFkD4Xie0POo9wLfg==\n-----END PUBLIC KEY-----\n", + }, + }, + }, + [Segment.CI00]: { + SEGMENT: Segment.CI00, + LOG_FORMAT: "json", + LOG_LEVEL: LogLevel.INFO, + LICENSING_SERVICE_URL: "https://licensing-ci00.bettermarks.com", + EVENTS_EXPORT_FUNCTION: + "services.licensing.export.bettermarks_export.export_event", + EVENTS_EXPORT_EXPORT_HOOK: + "services.licensing.export.bettermarks_export.modified_event", + SDWH_PORT: "22", + SDWH_USER: "ionos", + SDWH_DB_HOST: "localhost", + SDWH_DB_USER: "bmsdwhbiuser", + SDWH_DB_PORT: "5432", + SDWH_DB_NAME: "bmsdwh", + APM_URL: "https://apm.bettermarks.com", + APM_ENABLED: true, + APM_TRANSACTION_SAMPLE_RATE: "0.1", + JWT_VERIFICATION_KEYS: { + "794724cc-d956-4009-9eba-46d2aa38eabc": { + format: "pem", + desc: "used as public (EC) JWS signature key OF shop service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEivNA6e6LoJKM886bFOCxQ7+3F36P\n+6QLxAGtJ5GIQDAQsOpaiKXAVaqJ2nAhGCdJbByzmtRn4nR/t0bU4jCGCA==\n-----END PUBLIC KEY-----\n", + }, + "bd0bc964-cddf-4705-85ba-8d57be91977c": { + format: "pem", + desc: "used as public (EC) JWS signature key OF hierarchy provider", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdlDx9TUME1wIxWNju6ax+RZOlkYO\njDigVFlep5dk30kCynjDYjBp0EsO4bePiyfK913/swEZ/r/CzUc2B7VlcQ==\n-----END PUBLIC KEY-----\n", + }, + "9aac3057-e492-448e-90bf-1404124056b0": { + format: "pem", + desc: "used as public (EC) JWS signature key OF ordering service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEldVFYtN5IffED9PrPRHBwFmXHYWK\ngz9Inj/8651FRWekYyWvkdrvWkNRj5OLOpqtWRXFnRjqdxgeUPPJduajLQ==\n-----END PUBLIC KEY-----\n", + }, + "cec04f88-14cb-442c-94c2-86196e33c926": { + format: "pem", + desc: "used as public (EC) JWS signature key OF backoffice service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jG0Lko1bL1iy0exdlWt6ugJLN/D\n6W79hKhYYiMqu43fJci2Gd3huo6WQG9FrnoIzNIy6+pFbTbtVSuljy0EBQ==\n-----END PUBLIC KEY-----\n", + }, + }, + }, + [Segment.CI01]: { + SEGMENT: Segment.CI01, + LOG_FORMAT: "json", + LOG_LEVEL: LogLevel.INFO, + LICENSING_SERVICE_URL: "https://licensing-ci01.bettermarks.com", + APM_URL: "https://apm.bettermarks.com", + APM_ENABLED: true, + APM_TRANSACTION_SAMPLE_RATE: "0.1", + JWT_VERIFICATION_KEYS: { + "794724cc-d956-4009-9eba-46d2aa38eabc": { + format: "pem", + desc: "used as public (EC) JWS signature key OF shop service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEivNA6e6LoJKM886bFOCxQ7+3F36P\n+6QLxAGtJ5GIQDAQsOpaiKXAVaqJ2nAhGCdJbByzmtRn4nR/t0bU4jCGCA==\n-----END PUBLIC KEY-----\n", + }, + "bd0bc964-cddf-4705-85ba-8d57be91977c": { + format: "pem", + desc: "used as public (EC) JWS signature key OF hierarchy provider", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdlDx9TUME1wIxWNju6ax+RZOlkYO\njDigVFlep5dk30kCynjDYjBp0EsO4bePiyfK913/swEZ/r/CzUc2B7VlcQ==\n-----END PUBLIC KEY-----\n", + }, + "9aac3057-e492-448e-90bf-1404124056b0": { + format: "pem", + desc: "used as public (EC) JWS signature key OF ordering service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEldVFYtN5IffED9PrPRHBwFmXHYWK\ngz9Inj/8651FRWekYyWvkdrvWkNRj5OLOpqtWRXFnRjqdxgeUPPJduajLQ==\n-----END PUBLIC KEY-----\n", + }, + "cec04f88-14cb-442c-94c2-86196e33c926": { + format: "pem", + desc: "used as public (EC) JWS signature key OF backoffice service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jG0Lko1bL1iy0exdlWt6ugJLN/D\n6W79hKhYYiMqu43fJci2Gd3huo6WQG9FrnoIzNIy6+pFbTbtVSuljy0EBQ==\n-----END PUBLIC KEY-----\n", + }, + }, + }, + [Segment.PRO00]: { + SEGMENT: Segment.PRO00, + LOG_FORMAT: "json", + LOG_LEVEL: LogLevel.INFO, + LICENSING_SERVICE_URL: "https://licensing.bettermarks.com", + EVENTS_EXPORT_FUNCTION: + "services.licensing.export.bettermarks_export.export_event", + EVENTS_EXPORT_EXPORT_HOOK: + "services.licensing.export.bettermarks_export.modified_event", + SDWH_PORT: "22", + SDWH_USER: "ionos", + SDWH_DB_HOST: "localhost", + SDWH_DB_USER: "bmsdwhbiuser", + SDWH_DB_PORT: "5432", + SDWH_DB_NAME: "bmsdwh", + DATA_EVENT_API_URL: "https://data.bettermarks.com/events", + APM_URL: "https://apm.bettermarks.com", + APM_ENABLED: true, + APM_TRANSACTION_SAMPLE_RATE: "0.1", + JWT_VERIFICATION_KEYS: { + "4b1cc728-5828-4639-8a27-a860dbd87aba": { + format: "pem", + desc: "used as public (EC) JWS signature key OF shop service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUzo1cWp0LxhL6xRHUjX9LylocdWK\nCuGlz/Y7+1hawKFPcw7ZoeBCVDHUPYh9TGknnNIQHfkPZguwUUWPz2gpCA==\n-----END PUBLIC KEY-----\n", + }, + "6a51f17d-7187-4408-a9bb-2c267cf2be78": { + format: "pem", + desc: "used as public (EC) JWS signature key OF hierarchy provider", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+TFRZVMMoK3y8ui+hSdLxjtmnwCP\ntHE8J1dsCduCSfhETqq9SgXKDks8KMkeYUmy2ykmWdyAmKydEwizTD4RDw==\n-----END PUBLIC KEY-----\n", + }, + "9aac3057-e492-448e-90bf-1404124056b0": { + format: "pem", + desc: "used as public (EC) JWS signature key OF ordering service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEldVFYtN5IffED9PrPRHBwFmXHYWK\ngz9Inj/8651FRWekYyWvkdrvWkNRj5OLOpqtWRXFnRjqdxgeUPPJduajLQ==\n-----END PUBLIC KEY-----\n", + }, + "72afe436-6b79-43a9-ae04-82d6af25f6ff": { + format: "pem", + desc: "used as public (EC) JWS signature key OF backoffice service", + key: "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4rQ1KsDrKZ2n5qyQyFRmGuEY8kI6\nx/x5t9ZnIyR96Dwr9uyPU9C5wSENDG95dlSgqgTTGDftBcavsP1DjhcydQ==\n-----END PUBLIC KEY-----", + }, + }, + }, +}; + +/** + * Deployment configuration per segment + */ +export const DEPLOYMENT_CONFIG: { + [key: string]: DeploymentConfig; +} = { + [Segment.LOC00]: { + apiReplicas: 1, + migrationJobResources: {}, + loadFixturesJobResources: {}, + apiResources: {}, + eventExportResources: {}, + }, + [Segment.DEV00]: { + migrationJobResources: { + requests: { + cpu: Quantity.fromNumber(0.025), + memory: Quantity.fromString("64Mi"), + }, + limits: { + memory: Quantity.fromString("64Mi"), + }, + }, + loadFixturesJobResources: { + requests: { + cpu: Quantity.fromNumber(0.025), + memory: Quantity.fromString("64Mi"), + }, + limits: { + memory: Quantity.fromString("64Mi"), + }, + }, + apiResources: { + requests: { + cpu: Quantity.fromNumber(0.1), + memory: Quantity.fromString("128Mi"), + }, + limits: { + memory: Quantity.fromString("128Mi"), + }, + }, + eventExportResources: { + requests: { + cpu: Quantity.fromNumber(0.1), + memory: Quantity.fromString("128Mi"), + }, + limits: { + memory: Quantity.fromString("128Mi"), + }, + }, + apiReplicas: 1, + }, + [Segment.DEV01]: { + migrationJobResources: { + requests: { + cpu: Quantity.fromNumber(0.025), + memory: Quantity.fromString("64Mi"), + }, + limits: { + memory: Quantity.fromString("64Mi"), + }, + }, + loadFixturesJobResources: { + requests: { + cpu: Quantity.fromNumber(0.025), + memory: Quantity.fromString("64Mi"), + }, + limits: { + memory: Quantity.fromString("64Mi"), + }, + }, + apiResources: { + requests: { + cpu: Quantity.fromNumber(0.1), + memory: Quantity.fromString("128Mi"), + }, + limits: { + memory: Quantity.fromString("128Mi"), + }, + }, + eventExportResources: { + requests: { + cpu: Quantity.fromNumber(0.1), + memory: Quantity.fromString("128Mi"), + }, + limits: { + memory: Quantity.fromString("128Mi"), + }, + }, + apiReplicas: 1, + }, + [Segment.CI00]: { + migrationJobResources: { + requests: { + cpu: Quantity.fromNumber(0.05), + memory: Quantity.fromString("128Mi"), + }, + limits: { + memory: Quantity.fromString("128Mi"), + }, + }, + loadFixturesJobResources: { + requests: { + cpu: Quantity.fromNumber(0.05), + memory: Quantity.fromString("128Mi"), + }, + limits: { + memory: Quantity.fromString("128Mi"), + }, + }, + apiResources: { + requests: { + cpu: Quantity.fromNumber(0.25), + memory: Quantity.fromString("256Mi"), + }, + limits: { + memory: Quantity.fromString("256Mi"), + }, + }, + eventExportResources: { + requests: { + cpu: Quantity.fromNumber(0.1), + memory: Quantity.fromString("128Mi"), + }, + limits: { + memory: Quantity.fromString("128Mi"), + }, + }, + apiReplicas: 2, + }, + [Segment.CI01]: { + migrationJobResources: { + requests: { + cpu: Quantity.fromNumber(0.05), + memory: Quantity.fromString("128Mi"), + }, + limits: { + memory: Quantity.fromString("128Mi"), + }, + }, + loadFixturesJobResources: { + requests: { + cpu: Quantity.fromNumber(0.05), + memory: Quantity.fromString("128Mi"), + }, + limits: { + memory: Quantity.fromString("128Mi"), + }, + }, + apiResources: { + requests: { + cpu: Quantity.fromNumber(0.25), + memory: Quantity.fromString("256Mi"), + }, + limits: { + memory: Quantity.fromString("256Mi"), + }, + }, + eventExportResources: { + requests: { + cpu: Quantity.fromNumber(0.1), + memory: Quantity.fromString("128Mi"), + }, + limits: { + memory: Quantity.fromString("128Mi"), + }, + }, + apiReplicas: 2, + }, + [Segment.PRO00]: { + migrationJobResources: { + requests: { + cpu: Quantity.fromNumber(0.05), + memory: Quantity.fromString("128Mi"), + }, + limits: { + memory: Quantity.fromString("128Mi"), + }, + }, + loadFixturesJobResources: { + requests: { + cpu: Quantity.fromNumber(0.25), + memory: Quantity.fromString("128Mi"), + }, + limits: { + memory: Quantity.fromString("128Mi"), + }, + }, + apiResources: { + requests: { + cpu: Quantity.fromNumber(0.25), + memory: Quantity.fromString("512Mi"), + }, + limits: { + memory: Quantity.fromString("512Mi"), + }, + }, + eventExportResources: { + requests: { + cpu: Quantity.fromNumber(0.3), + memory: Quantity.fromString("256Mi"), + }, + limits: { + memory: Quantity.fromString("256Mi"), + }, + }, + apiReplicas: 4, + }, +}; + +export const getAppConfigSegment = (segment: Segment): ApplicationConfig => { + return { + ...APPLICATION_CONFIG[segment], + }; +}; diff --git a/k8s/lib/jobs.ts b/k8s/lib/common/licensing-job.ts similarity index 89% rename from k8s/lib/jobs.ts rename to k8s/lib/common/licensing-job.ts index ad0c19b..2653734 100644 --- a/k8s/lib/jobs.ts +++ b/k8s/lib/common/licensing-job.ts @@ -1,7 +1,7 @@ -import { Container, KubeJob } from "../imports/k8s"; +import { Container, KubeJob } from "../../imports/k8s"; +import { NodeSelector } from "../types"; +import { RestartPolicy } from "cdk8s-plus-29"; import { Construct } from "constructs"; -import { NodeSelector } from "./types"; -import { RestartPolicy } from "cdk8s-plus-27"; export type LicensingJobProps = { name: string; diff --git a/k8s/lib/common/local-ingress.ts b/k8s/lib/common/local-ingress.ts new file mode 100644 index 0000000..317c35c --- /dev/null +++ b/k8s/lib/common/local-ingress.ts @@ -0,0 +1,48 @@ +import { KubeIngress } from "../../imports/k8s"; +import { Chart, ChartProps } from "cdk8s"; +import { HttpIngressPathType } from "cdk8s-plus-29"; +import { Construct } from "constructs"; + +export type LocalIngressProps = ChartProps & {}; + +export class LocalIngressChart extends Chart { + constructor(scope: Construct, id: string, props: LocalIngressProps) { + const { namespace } = props; + + super(scope, id, props); + + /** + * Create ingress + */ + new KubeIngress(this, "local-ingress", { + metadata: { + namespace, + name: "licensing-ingress", + }, + spec: { + ingressClassName: "loc00-nginx", + rules: [ + { + host: "licensing.bettermarks.loc", + http: { + paths: [ + { + path: "/", + pathType: HttpIngressPathType.PREFIX, + backend: { + service: { + name: "licensing-api", + port: { + number: 80, + }, + }, + }, + }, + ], + }, + }, + ], + }, + }); + } +} diff --git a/k8s/lib/common/secrets.ts b/k8s/lib/common/secrets.ts new file mode 100644 index 0000000..00fc6d7 --- /dev/null +++ b/k8s/lib/common/secrets.ts @@ -0,0 +1,203 @@ +import { + ExternalSecretV1Beta1, + ExternalSecretV1Beta1SpecDataRemoteRefDecodingStrategy, +} from "../../imports/external-secrets.io"; +import { + ESO_STACKIT_SECRETS_MANAGER, + EVENT_EXPORT_SECRET, + LICENSING_SECRET, + LOCAL_POSTGRES_ENV_DATA, +} from "../constants"; +import { getStageFromSegment, Segment } from "../types"; +import { Chart, ChartProps } from "cdk8s"; +import { Secret } from "cdk8s-plus-29"; +import { Construct } from "constructs"; + +interface LicensingSecretsProps extends ChartProps { + /** + * Segment. + */ + segment: Segment; + /** + * Namespace. + */ + namespace: string; +} + +export class LicensingSecrets extends Chart { + constructor(scope: Construct, id: string, props: LicensingSecretsProps) { + super(scope, id, props); + + const { segment, namespace } = props; + + if (segment === Segment.LOC00) { + new Secret(this, "local-licensing-secret", { + metadata: { + name: LICENSING_SECRET, + namespace, + }, + stringData: { + APM_SECRET_TOKEN: "", + LICENSING_SERVICE_KID: "f72e2e28-a232-411c-a5ad-34a18480aa10", + LICENSING_SERVICE_PRIVATE_KEY: [ + "-----BEGIN PRIVATE KEY-----", + "MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgrCkyWdmYFh6plKVx", + "gypQFWoVJ1LOOBdr+36LhulS85ShRANCAAQ5nWN+SnvwJ4Xt2z9EtJl1BkUjWFY5", + "PuM88BLOTlEjn6Win2uqSn5JdFVPsn7r9h+O9HAnrSBWUaNRghpkVwuZ", + "-----END PRIVATE KEY-----", + ].join("\n"), + ...LOCAL_POSTGRES_ENV_DATA, + }, + }); + new Secret(this, "local-event-export-secret", { + metadata: { + name: EVENT_EXPORT_SECRET, + namespace, + }, + stringData: { + SDWH_POSTGRES_SECRET: "", + SDWH_HOST_PRIVATE_KEY: "", + SDWH_PRIVATE_IP: "127.0.0.1", + DATA_EVENT_API_KEY: "", + MONGODB_URI: "", + DATA_EVENT_API_SECRET: "", + ...LOCAL_POSTGRES_ENV_DATA, + }, + }); + } else { + /** + * Create a K8s secrets from multiple secrets. + */ + new ExternalSecretV1Beta1(this, "external-licensing-secret", { + metadata: { + name: `ext-${LICENSING_SECRET}`, + namespace, + }, + spec: { + refreshInterval: "1h", // "0" means: fetch data and create secret only once. + secretStoreRef: { + name: ESO_STACKIT_SECRETS_MANAGER, + kind: "ClusterSecretStore", + }, + target: { + name: LICENSING_SECRET, + }, + // Fetch all key-value pairs from key-value-secrets. + dataFrom: [ + { + extract: { + key: `stackit/${segment}-pg-cluster-licensing/credentials`, + }, + }, + { + extract: { + key: `licensing/${segment}/credentials`, + }, + }, + ], + /** + * STACKIT: Secrets Manager (Vault) only supports key-value secrets. + * In this case the value is Base64 encoded for PEM formatted secrets, + * eg.: private or public key + */ + data: [ + { + secretKey: "LICENSING_SERVICE_PRIVATE_KEY", + remoteRef: { + key: `licensing/${segment}/licensing-service-private-key`, + property: "LICENSING_SERVICE_PRIVATE_KEY", + decodingStrategy: + ExternalSecretV1Beta1SpecDataRemoteRefDecodingStrategy.BASE64, + }, + }, + ], + }, + }); + + new ExternalSecretV1Beta1(this, "external-event-export-secret", { + metadata: { + name: `ext-${EVENT_EXPORT_SECRET}`, + namespace, + }, + spec: { + refreshInterval: "1h", // "0" means: fetch data and create secret only once. + secretStoreRef: { + name: ESO_STACKIT_SECRETS_MANAGER, + kind: "ClusterSecretStore", + }, + target: { + name: EVENT_EXPORT_SECRET, + }, + // Fetch all key-value pairs from key-value-secrets. + dataFrom: [ + { + extract: { + key: `stackit/${segment}-pg-cluster-licensing/credentials`, + }, + }, + ...(segment === Segment.PRO00 + ? [ + { + extract: { + // This secret contains the public IP in pro00 STACKIT vault. + key: `ionos/${segment}-sdwh/private-ip`, + }, + }, + ] + : []), + ], + data: [ + ...(segment === Segment.PRO00 + ? [ + /** + * STACKIT: Secrets Manager (Vault) only supports key-value secrets. + * In this case the value is Base64 encoded for PEM formatted secrets, + * eg.: private or public key + */ + { + secretKey: "SDWH_HOST_PRIVATE_KEY", + remoteRef: { + key: `ionos/${segment}-sdwh/rsa-private-key`, + property: "SDWH_HOST_PRIVATE_KEY", + decodingStrategy: + ExternalSecretV1Beta1SpecDataRemoteRefDecodingStrategy.BASE64, + }, + }, + { + secretKey: "SDWH_POSTGRES_SECRET", + remoteRef: { + key: `ionos/${segment}-sdwh/reader-password`, + property: "SDWH_POSTGRES_SECRET", + }, + }, + { + secretKey: "DATA_EVENT_API_KEY", + remoteRef: { + key: `${getStageFromSegment(segment)}_event_api_key_secret`, + property: "DATA_EVENT_API_KEY", + }, + }, + ] + : []), + { + // Fetch a specific key from a key-value secret. + secretKey: "BM_ENCRYPTION_PASSWORD", + remoteRef: { + key: `backend/${segment}/credentials`, + property: "BM_ENCRYPTION_PASSWORD", + }, + }, + { + // Fetch a specific key from a key-value secret. + secretKey: "MONGODB_URI", + remoteRef: { + key: `stackit/${segment}/application/readonly-secret`, + property: "MONGODB_URI", + }, + }, + ], + }, + }); + } + } +} diff --git a/k8s/lib/service-account.ts b/k8s/lib/common/service-account.ts similarity index 78% rename from k8s/lib/service-account.ts rename to k8s/lib/common/service-account.ts index 23d98ec..6ed3265 100644 --- a/k8s/lib/service-account.ts +++ b/k8s/lib/common/service-account.ts @@ -1,7 +1,11 @@ -import { KubeRole, KubeServiceAccount, KubeRoleBinding } from "../imports/k8s"; -import { Construct } from "constructs"; +import { + KubeRole, + KubeServiceAccount, + KubeRoleBinding, +} from "../../imports/k8s"; +import { Namespace } from "../types"; import { Chart } from "cdk8s"; -import { Namespace } from "./types"; +import { Construct } from "constructs"; export type LicensingServiceAccountProps = { /** @@ -14,6 +18,7 @@ export type LicensingServiceAccountProps = { export class LicensingServiceAccount extends Chart { readonly serviceAccount: KubeServiceAccount; + readonly imagePullSecrets: ReadonlyArray; constructor( scope: Construct, @@ -22,7 +27,7 @@ export class LicensingServiceAccount extends Chart { ) { super(scope, id); - const { name, namespace = Namespace.LICENSING } = props; + const { name, namespace = Namespace.LICENSING, imagePullSecrets } = props; this.serviceAccount = new KubeServiceAccount( this, @@ -32,12 +37,12 @@ export class LicensingServiceAccount extends Chart { name, namespace, }, - imagePullSecrets: props.imagePullSecrets?.map((secretRef) => ({ + imagePullSecrets: imagePullSecrets?.map((secretRef) => ({ name: secretRef, })), }, ); - + this.imagePullSecrets = imagePullSecrets; const role = new KubeRole(this, "licensing-role", { metadata: { name, diff --git a/k8s/lib/services/licensing-service.ts b/k8s/lib/common/service.ts similarity index 65% rename from k8s/lib/services/licensing-service.ts rename to k8s/lib/common/service.ts index 73c2e2e..166abf3 100644 --- a/k8s/lib/services/licensing-service.ts +++ b/k8s/lib/common/service.ts @@ -1,14 +1,16 @@ -import { ServiceType } from "cdk8s-plus-27"; -import { Construct } from "constructs"; import { - KubeDeployment, - KubeService, Container, IntOrString, - Volume, + KubeDeployment, + KubeService, + Toleration, TopologySpreadConstraint, + Volume, } from "../../imports/k8s"; +import { DEFAULT_TOLERATIONS } from "../constants"; import { NodeSelector } from "../types"; +import { ServiceType } from "cdk8s-plus-29"; +import { Construct } from "constructs"; export type LicensingServiceProps = { name: string; @@ -22,6 +24,7 @@ export type LicensingServiceProps = { containerPort: number; namespace?: string; }; + export class LicensingService extends Construct { readonly service?: KubeService; @@ -42,20 +45,38 @@ export class LicensingService extends Construct { } = props; /** - * Node selector and topology spread constraints + * Node selector, tolerations and topology spread constraints */ - let topologySpreadConstraints: TopologySpreadConstraint[] = []; + let tolerations: Toleration[] | undefined; + let topologySpreadConstraints: TopologySpreadConstraint[] | undefined; if (nodeSelector && Object.keys(nodeSelector).length > 0) { + tolerations = DEFAULT_TOLERATIONS; topologySpreadConstraints = [ + { + maxSkew: 1, + topologyKey: "topology.kubernetes.io/zone", + whenUnsatisfiable: "ScheduleAnyway", + labelSelector: { + matchLabels: { + app: name, + }, + }, + matchLabelKeys: ["pod-template-hash"], + nodeAffinityPolicy: "Honor", + nodeTaintsPolicy: "Honor", + }, { maxSkew: 1, topologyKey: "kubernetes.io/hostname", - whenUnsatisfiable: "DoNotSchedule", + whenUnsatisfiable: "ScheduleAnyway", labelSelector: { matchLabels: { app: name, }, }, + matchLabelKeys: ["pod-template-hash"], + nodeAffinityPolicy: "Honor", + nodeTaintsPolicy: "Honor", }, ]; } @@ -72,6 +93,12 @@ export class LicensingService extends Construct { app: name, }, }, + strategy: { + rollingUpdate: { + maxSurge: IntOrString.fromNumber(1), + maxUnavailable: IntOrString.fromNumber(0), + }, + }, template: { metadata: { labels: { @@ -81,12 +108,11 @@ export class LicensingService extends Construct { spec: { serviceAccountName, nodeSelector, - ...(topologySpreadConstraints.length > 0 && { - topologySpreadConstraints: topologySpreadConstraints, - }), + tolerations, + topologySpreadConstraints, initContainers, containers, - ...(volumes && { volumes: volumes }), + volumes, }, }, }, diff --git a/k8s/lib/constants.ts b/k8s/lib/constants.ts index e81f1a8..c9c2bf9 100644 --- a/k8s/lib/constants.ts +++ b/k8s/lib/constants.ts @@ -1,53 +1,61 @@ +import { Toleration } from "../imports/k8s"; import { NodeSelector } from "./types"; export const APP_NODE_POOL_LABELS: NodeSelector = { nodetype: "application", }; +// Default tolerations +export const DEFAULT_TOLERATIONS: Toleration[] = [ + { + key: "node.kubernetes.io/unreachable", + operator: "Exists", + effect: "NoExecute", + tolerationSeconds: 20, + }, + { + key: "node.kubernetes.io/not-ready", + operator: "Exists", + effect: "NoExecute", + tolerationSeconds: 20, + }, +]; + /** - * Name of the secret which is used by service chart to look up application secret. - * This secret is created by AWS Secrets helper in bm-operations project. https://github.com/bettermarks/bm-operations/blob/master/cdk8s/apps/licensing.ts + * Name of the secret which is used by LicensingChart and MigrationJobChart to look up secrets. */ -export const APPLICATION_SECRET = "licensing-secret"; +export const LICENSING_SECRET = "licensing"; /** - * Name of the secret which is used by service chart to look up Postgres DB credentials. - * This secret is created by AWS Secrets helper in bm-operations project. https://github.com/bettermarks/bm-operations/blob/master/cdk8s/apps/licensing.ts + * Name of the secret which is used by EventExportCronJob chart to look up secrets. */ -export const POSTGRES_SECRET = "licensing-postgres-secret"; +export const EVENT_EXPORT_SECRET = "event-export"; + /** * Name of the secret used by Service Account to pull image from AWS ECR registry. - * This secret is created by AWS Registry Helper Cron. https://github.com/bettermarks/bm-operations/blob/master/cdk8s/apps/licensing.ts + * This secret is created as part of a K8s cluster setup in bm-operations repo. */ export const REGISTRY_CREDENTIALS = "registry-credentials"; -/** - * Name of the secret which is used by Licensing service chart to look up licensing service private key. - * This secret is created by AWS Secrets helper in bm-operations project. https://github.com/bettermarks/bm-operations/blob/master/cdk8s/apps/licensing.ts - */ -export const LICENSING_SERVICE_PRIVATE_KEY = "licensing-service-private-key"; -/** - * Name of the secret which is used by Licensing service chart to look up licensing service private key. - * This secret is created by AWS Secrets helper in bm-operations project. https://github.com/bettermarks/bm-operations/blob/master/cdk8s/apps/licensing.ts - */ -export const SHOP_SERVICE_PRIVATE_KEY = "shop-service-private-key"; - -/** - * Name of various secrets used for event export - */ -export const MONGO_ATLAS_READONLY_SECRET = "mongo-atlas-readonly-secret"; -export const DATA_EVENT_API_SECRET = "data-event-api-secret"; -export const BACKEND_SECRET = "backend-secret"; -export const SDWH_POSTGRES_SECRET = "sdwh-postgres-secret"; -export const SDWH_HOST_PRIVATE_KEY = "sdwh-host-private-key"; -export const SDWH_PRIVATE_IP = "sdwh-private-ip"; /** * Name of the image used for postgres database. */ export const POSTGRES_IMAGE = "postgres:14"; + +/** + * Local postgres + */ +export const LOCAL_POSTGRES_ENV_DATA = { + DB_HOST: "licensing-db", + DB_PORT: "5432", + DB_USER: "postgres", + DB_PASSWORD: "postgres", + DB_NAME: "postgres", + POSTGRES_PASSWORD: "postgres", + POSTGRES_USER: "postgres", + POSTGRES_DB: "postgres", +}; + /** - * Name of the ingress class for Licensing which is used in: - * - k8s/lib/charts/ingress-nginx.ts: Helm -> ingressClassResource - * - k8s/lib/charts/licensing.ts: KubeIngress -> ingressClassName - * This prevents clashes in ingress networking with overlapping ingress rules. + * External Secrets Cluster Secret Store: STACKIT Secrets Manager (Vault) */ -export const LICENSING_INGRESS_CLASS = "licensing-nginx"; +export const ESO_STACKIT_SECRETS_MANAGER = "stackit-secrets-manager"; diff --git a/k8s/lib/licensing/licensing-app.ts b/k8s/lib/licensing/licensing-app.ts new file mode 100644 index 0000000..76e44f8 --- /dev/null +++ b/k8s/lib/licensing/licensing-app.ts @@ -0,0 +1,113 @@ +import { APPLICATION_CONFIG, DEPLOYMENT_CONFIG } from "../common/config"; +import { LocalIngressChart } from "../common/local-ingress"; +import { LicensingSecrets } from "../common/secrets"; +import { LicensingServiceAccount } from "../common/service-account"; +import { + APP_NODE_POOL_LABELS, + POSTGRES_IMAGE, + REGISTRY_CREDENTIALS, +} from "../constants"; +import { PostgresChart } from "../postgres/postgres"; +import { AppSynthProps, Segment } from "../types"; +import { LicensingChart } from "./licensing"; +import { LicensingConfig } from "./licensing-configmap"; +import { EventExportCronJob } from "./licensing-event-export-cron-job"; +import { MigrationJobChart } from "./licensing-migration-job"; +import { App } from "cdk8s"; + +export const createLicensingApp = (app: App, appProps: AppSynthProps) => { + const { segment, imageTag, namespace } = appProps; + + let pgChart: PostgresChart | undefined = undefined; + let localIngressChart: LocalIngressChart | undefined = undefined; + + const licensingServiceAccount = new LicensingServiceAccount( + app, + "licensing-service-account", + { + imagePullSecrets: segment === Segment.LOC00 ? [] : [REGISTRY_CREDENTIALS], + name: "licensing", + namespace, + }, + ); + const licensingConfig = new LicensingConfig(app, "licensing-config", { + appConfig: APPLICATION_CONFIG[segment], + name: "licensing-config", + namespace, + }); + const licensingSecrets = new LicensingSecrets(app, "licensing-secrets", { + segment, + namespace, + }); + const image = + segment === Segment.LOC00 + ? "licensing" + : `676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:${imageTag}`; + const nodeSelector = + segment === Segment.LOC00 ? undefined : APP_NODE_POOL_LABELS; + const { + apiResources, + apiReplicas, + migrationJobResources, + eventExportResources, + } = DEPLOYMENT_CONFIG[segment]; + + const licensingChart = new LicensingChart(app, "licensing", { + name: "licensing", + image, + configMap: licensingConfig.configMap.name, + apiReplicas, + apiResources, + namespace, + nodeSelector, + segment, + serviceAccountName: licensingServiceAccount.serviceAccount.name, + }); + + const licensingMigrationJob = new MigrationJobChart(app, "migration", { + configMap: licensingConfig.configMap.name, + image, + name: "licensing", + namespace, + nodeSelector, + serviceAccountName: licensingServiceAccount.serviceAccount.name, + migrationJobResources, + }); + + const logFormat = segment === Segment.LOC00 ? "console" : "json"; + const licensingEventExportCronjob = new EventExportCronJob( + app, + "event-export", + { + configMap: licensingConfig.configMap.name, + image, + logFormat, + name: "licensing-event-export", + namespace, + nodeSelector, + resources: eventExportResources, + serviceAccountName: licensingServiceAccount.serviceAccount.name, + }, + ); + + if (segment === Segment.LOC00) { + pgChart = new PostgresChart(app, "postgres", { + image: POSTGRES_IMAGE, + name: "licensing-db", + namespace, + }); + localIngressChart = new LocalIngressChart(app, "local-ingress", { + namespace, + }); + } + return { + licensingServiceAccount, + licensingConfig, + licensingSecrets, + licensingChart, + licensingMigrationJob, + licensingEventExportCronjob, + pgChart, + localIngressChart, + }; +}; diff --git a/k8s/lib/licensing-configmap.ts b/k8s/lib/licensing/licensing-configmap.ts similarity index 77% rename from k8s/lib/licensing-configmap.ts rename to k8s/lib/licensing/licensing-configmap.ts index 31d385b..b6ce00e 100644 --- a/k8s/lib/licensing-configmap.ts +++ b/k8s/lib/licensing/licensing-configmap.ts @@ -1,9 +1,9 @@ -import { ConfigMap } from "cdk8s-plus-27"; -import { Construct } from "constructs"; -import { ApplicationConfig } from "./types"; +import { ApplicationConfig } from "../types"; import { Chart, ChartProps } from "cdk8s"; +import { ConfigMap } from "cdk8s-plus-29"; +import { Construct } from "constructs"; -export type LicensingConfigProps = ChartProps & { +export type ConfigChartProps = ChartProps & { name: string; appConfig: ApplicationConfig; namespace?: string; @@ -12,7 +12,7 @@ export type LicensingConfigProps = ChartProps & { export class LicensingConfig extends Chart { readonly configMap: ConfigMap; - constructor(scope: Construct, id: string, props: LicensingConfigProps) { + constructor(scope: Construct, id: string, props: ConfigChartProps) { super(scope, id); const { name, namespace, appConfig } = props; diff --git a/k8s/lib/licensing/licensing-event-export-cron-job.ts b/k8s/lib/licensing/licensing-event-export-cron-job.ts new file mode 100644 index 0000000..ab553b7 --- /dev/null +++ b/k8s/lib/licensing/licensing-event-export-cron-job.ts @@ -0,0 +1,120 @@ +import { + EnvFromSource, + JobTemplateSpec, + KubeCronJob, + ResourceRequirements, +} from "../../imports/k8s"; +import { EVENT_EXPORT_SECRET } from "../constants"; +import { NodeSelector } from "../types"; +import { Chart, ChartProps } from "cdk8s"; +import { ImagePullPolicy, RestartPolicy } from "cdk8s-plus-29"; +import { Construct } from "constructs"; + +interface EventExportProps extends ChartProps { + /** + * Name for resources in this chart + * + * @default event-export + */ + name?: string; + /** + * Name of the config map containing necessary configuration. + * Keys are derived from the type ApplicationConfig + */ + configMap: string; + /** + * Docker image with AWS CLI and kubectl + * + * @see https://hub.docker.com/r/bettermarks/aws-cli-kubectl + */ + image: string; + /** + * The logformat to use. Possible values: "console", "json" + */ + logFormat?: string; + /** + * Node selector + */ + nodeSelector?: NodeSelector; + serviceAccountName: string; + resources?: ResourceRequirements; +} + +/** + * This chart runs the event export as cron job. + */ +export class EventExportCronJob extends Chart { + constructor(scope: Construct, id: string, props: EventExportProps) { + super(scope, id, props); + const { + namespace, + name = "licensing-event-export", + configMap, + image, + logFormat = "console", + nodeSelector, + resources, + serviceAccountName, + } = props; + + const applicationEnv: EnvFromSource[] = [ + { + configMapRef: { + name: configMap, + }, + }, + { + secretRef: { + name: EVENT_EXPORT_SECRET, + }, + }, + ]; + + const jobTemplate: JobTemplateSpec = { + metadata: { + name, + namespace, + }, + spec: { + suspend: false, + backoffLimit: 1, // retry + ttlSecondsAfterFinished: 600, // delete finished job after 10 min + template: { + spec: { + nodeSelector, + serviceAccountName, + restartPolicy: RestartPolicy.NEVER, + containers: [ + { + name, + image, + imagePullPolicy: ImagePullPolicy.IF_NOT_PRESENT, + resources, + envFrom: applicationEnv, + command: [ + "python", + "src/services/licensing/scripts/export_events.py", + "--events-per-run=12000", + `--log-format=${logFormat}`, + ], + }, + ], + }, + }, + }, + }; + + new KubeCronJob(this, "cronjob", { + metadata: { + name, + namespace, + }, + spec: { + schedule: "*/20 * * * *", + concurrencyPolicy: "Forbid", + jobTemplate, + suspend: false, + }, + }); + } +} diff --git a/k8s/lib/charts/migration-job.ts b/k8s/lib/licensing/licensing-migration-job.ts similarity index 76% rename from k8s/lib/charts/migration-job.ts rename to k8s/lib/licensing/licensing-migration-job.ts index 0b61688..c6869ff 100644 --- a/k8s/lib/charts/migration-job.ts +++ b/k8s/lib/licensing/licensing-migration-job.ts @@ -1,15 +1,14 @@ -import { Chart, ChartProps } from "cdk8s"; -import { ImagePullPolicy } from "cdk8s-plus-27"; import { EnvFromSource, Quantity, ResourceRequirements, } from "../../imports/k8s"; -import { Construct } from "constructs"; - +import { LicensingJob } from "../common/licensing-job"; +import { LICENSING_SECRET, POSTGRES_IMAGE } from "../constants"; import { NodeSelector, Namespace } from "../types"; -import { POSTGRES_IMAGE } from "../constants"; -import { LicensingJob } from "../jobs"; +import { Chart, ChartProps } from "cdk8s"; +import { ImagePullPolicy } from "cdk8s-plus-29"; +import { Construct } from "constructs"; /** * This class is the implementation detail of Licensing deployment. @@ -19,23 +18,6 @@ export type LicensingChartProps = ChartProps & { * Docker image for Licensing */ image: string; - /** - * Name of the secret containing Postgres credentials - * - * Required keys: - * - DB_HOST - * - DB_PORT - * - DB_USER - * - DB_PASSWORD - * - DB_NAME - */ - postgresSecret: string; - /** - * Name of the secret containing necessary credentials for running the service. - * - * Required keys: - */ - applicationSecret?: string; name: string; serviceAccountName: string; /** @@ -53,12 +35,10 @@ export class MigrationJobChart extends Chart { const { namespace = Namespace.LICENSING, - applicationSecret, image, nodeSelector, migrationJobResources, serviceAccountName, - postgresSecret, name, configMap, } = props; @@ -71,18 +51,9 @@ export class MigrationJobChart extends Chart { }, { secretRef: { - name: postgresSecret, + name: LICENSING_SECRET, }, }, - ...(applicationSecret - ? [ - { - secretRef: { - name: applicationSecret, - }, - }, - ] - : []), ]; /** * Job for running database migration diff --git a/k8s/lib/licensing/licensing.ts b/k8s/lib/licensing/licensing.ts new file mode 100644 index 0000000..552b8bc --- /dev/null +++ b/k8s/lib/licensing/licensing.ts @@ -0,0 +1,111 @@ +import { + EnvFromSource, + IntOrString, + ResourceRequirements, +} from "../../imports/k8s"; +import { LicensingService } from "../common/service"; +import { LICENSING_SECRET } from "../constants"; +import { Namespace, NodeSelector, Segment } from "../types"; +import { Chart, ChartProps } from "cdk8s"; +import { ImagePullPolicy } from "cdk8s-plus-29"; +import { Construct } from "constructs"; + +/** + * This class is the implementation detail of Licensing deployment. + */ +export type LicensingChartProps = ChartProps & { + /** + * Docker image for Licensing + */ + image: string; + serviceAccountName: string; + segment: Segment; + name: string; + /** + * Name of the config map containing necessary configuration. + * Keys are derived from the type ApplicationConfig + */ + configMap: string; + nodeSelector?: NodeSelector; + apiResources?: ResourceRequirements; + /** + * API replicas + * @default 3 + */ + apiReplicas?: number; +}; + +/** + * Deploys Licensing API server + */ +export class LicensingChart extends Chart { + constructor(scope: Construct, id: string, props: LicensingChartProps) { + super(scope, id, props); + + const { + namespace = Namespace.LICENSING, + apiReplicas = 1, + apiResources, + image, + nodeSelector, + serviceAccountName, + name, + configMap, + } = props; + + const applicationEnv: EnvFromSource[] = [ + { + configMapRef: { + name: configMap, + }, + }, + { + secretRef: { + name: LICENSING_SECRET, + }, + }, + ]; + + const apiName = `${name}-api`; + new LicensingService(this, `${apiName}-service`, { + name: apiName, + namespace, + replicas: apiReplicas, + serviceAccountName, + nodeSelector: nodeSelector, + initContainers: [], + containers: [ + { + name: apiName, + image, + imagePullPolicy: ImagePullPolicy.IF_NOT_PRESENT, + ports: [ + { + containerPort: 8000, + }, + ], + resources: apiResources, + envFrom: applicationEnv, + readinessProbe: { + httpGet: { + port: IntOrString.fromNumber(8000), + path: "/status", + }, + timeoutSeconds: 3, + initialDelaySeconds: 10, + }, + livenessProbe: { + httpGet: { + port: IntOrString.fromNumber(8000), + path: "/livez", + }, + timeoutSeconds: 3, + initialDelaySeconds: 10, + }, + }, + ], + servicePort: 80, + containerPort: 8000, + }); + } +} diff --git a/k8s/lib/namespace.ts b/k8s/lib/namespace.ts new file mode 100644 index 0000000..d240461 --- /dev/null +++ b/k8s/lib/namespace.ts @@ -0,0 +1,11 @@ +import { Chart, App } from "cdk8s"; +import * as kplus from "cdk8s-plus-29"; + +export const createNamespaceChart = (app: App, name: string) => { + const namespaceChart = new Chart(app, "namespace"); + new kplus.Namespace(namespaceChart, "Namespace", { + metadata: { name: name }, + }); + + return namespaceChart; +}; diff --git a/k8s/lib/charts/postgres.ts b/k8s/lib/postgres/postgres.ts similarity index 73% rename from k8s/lib/charts/postgres.ts rename to k8s/lib/postgres/postgres.ts index 2aadafd..1ad7cb1 100644 --- a/k8s/lib/charts/postgres.ts +++ b/k8s/lib/postgres/postgres.ts @@ -1,14 +1,9 @@ +import { IntOrString, KubeDeployment, KubeService } from "../../imports/k8s"; +import { LICENSING_SECRET } from "../constants"; +import { Namespace } from "../types"; import { Chart, ChartProps } from "cdk8s"; -import { - ConfigMap, - ImagePullPolicy, - ISecret, - Secret, - ServiceType, -} from "cdk8s-plus-27"; +import { ConfigMap, ImagePullPolicy, ServiceType } from "cdk8s-plus-29"; import { Construct } from "constructs"; -import { Namespace } from "../types"; -import { IntOrString, KubeDeployment, KubeService } from "../../imports/k8s"; interface PostgresChartProps extends ChartProps { image: string; @@ -16,37 +11,9 @@ interface PostgresChartProps extends ChartProps { } export class PostgresChart extends Chart { - /** - * Secret with Postgres credentials - * - * keys: - * - DB_HOST - * - DB_PORT - * - DB_USER - * - DB_PASSWORD - * - DB_NAME - * - POSTGRES_PASSWORD - */ - readonly secret: ISecret; - constructor(scope: Construct, id: string, props: PostgresChartProps) { super(scope, id, props); const { name, namespace = Namespace.LICENSING } = props; - const pgSecret = new Secret(this, "secret", { - metadata: { - name: name, - namespace, - }, - stringData: { - DB_PORT: "5432", - DB_USER: "postgres", - DB_PASSWORD: "postgres", - DB_NAME: "postgres", - POSTGRES_PASSWORD: "postgres", - POSTGRES_USER: "postgres", - POSTGRES_DB: "postgres", - }, - }); const configMap = new ConfigMap(this, "initdb", { metadata: { @@ -86,7 +53,7 @@ export class PostgresChart extends Chart { ports: [{ containerPort: 5432 }], envFrom: [ { - secretRef: { name: pgSecret.name }, + secretRef: { name: LICENSING_SECRET }, }, ], readinessProbe: { @@ -122,7 +89,7 @@ export class PostgresChart extends Chart { }, }); - const pgService = new KubeService(this, id, { + new KubeService(this, id, { metadata: { name, namespace, @@ -139,9 +106,5 @@ export class PostgresChart extends Chart { }, }, }); - - pgSecret.addStringData("DB_HOST", pgService.name); - pgSecret.addStringData("DB_PORT", "5432"); - this.secret = pgSecret; } } diff --git a/k8s/lib/types.ts b/k8s/lib/types.ts index 8439413..50ae023 100644 --- a/k8s/lib/types.ts +++ b/k8s/lib/types.ts @@ -1,4 +1,5 @@ import { ResourceRequirements } from "../imports/k8s"; + /** * Stages */ @@ -15,6 +16,7 @@ export enum Stage { export enum Segment { LOC00 = "loc00", DEV00 = "dev00", + DEV01 = "dev01", CI00 = "ci00", CI01 = "ci01", PRO00 = "pro00", @@ -92,3 +94,15 @@ export enum Namespace { DEFAULT = "default", LICENSING = "licensing", } + +/** + * App Synth Props + */ +export type AppSynthProps = { + segment: Segment; + imageTag: string; + namespace: string; +}; + +export const getStageFromSegment = (segment: string) => + segment.replace(/[0-9]/g, ""); diff --git a/k8s/loc00/application-secret.env b/k8s/loc00/application-secret.env deleted file mode 100644 index 576e231..0000000 --- a/k8s/loc00/application-secret.env +++ /dev/null @@ -1,2 +0,0 @@ -APM_SECRET_TOKEN="" -LICENSING_SERVICE_KID=f72e2e28-a232-411c-a5ad-34a18480aa10 diff --git a/k8s/main.ts b/k8s/main.ts index c89edd3..542aefa 100644 --- a/k8s/main.ts +++ b/k8s/main.ts @@ -1,141 +1,25 @@ -import { App } from "cdk8s"; -import { IngressNginxChart } from "./lib/charts/ingress-nginx"; -import { PostgresChart } from "./lib/charts/postgres"; -import { LicensingChart } from "./lib/charts/licensing"; +import { createLicensingApp } from "./lib/licensing/licensing-app"; +import { createNamespaceChart } from "./lib/namespace"; import { Segment } from "./lib/types"; -import { DEPLOYMENT_CONFIG, APPLICATION_CONFIG } from "./lib/config"; -import { - APP_NODE_POOL_LABELS, - APPLICATION_SECRET, - LICENSING_SERVICE_PRIVATE_KEY, - POSTGRES_IMAGE, - POSTGRES_SECRET, - SHOP_SERVICE_PRIVATE_KEY, - REGISTRY_CREDENTIALS, - MONGO_ATLAS_READONLY_SECRET, - DATA_EVENT_API_SECRET, - BACKEND_SECRET, - SDWH_POSTGRES_SECRET, - SDWH_PRIVATE_IP, - SDWH_HOST_PRIVATE_KEY, -} from "./lib/constants"; import { Namespace } from "./lib/types"; -import { MigrationJobChart } from "./lib/charts/migration-job"; -import { LicensingServiceAccount } from "./lib/service-account"; -import { LicensingConfig } from "./lib/licensing-configmap"; -import { EventExportCronJob } from "./lib/charts/event-export-cron-job"; +import { App } from "cdk8s"; const SEGMENT = (process.env.SEGMENT as Segment) || Segment.LOC00; const IMAGE_TAG = process.env.IMAGE_TAG || ""; -const IMAGE_NAME = "licensing"; -const IMAGE_REPO = `676249682729.dkr.ecr.eu-central-1.amazonaws.com/${IMAGE_NAME}`; -const app = new App(); +if (SEGMENT !== Segment.LOC00 && IMAGE_TAG === "") { + console.error("IMAGE_TAG is '' for remote segment."); + process.exit(1); +} + +const app = new App({ outdir: "dist" }); -const licensingServiceAccount = new LicensingServiceAccount( - app, - "licensing-service-account", - { - namespace: Namespace.LICENSING, - name: "licensing", - imagePullSecrets: SEGMENT === Segment.LOC00 ? [] : [REGISTRY_CREDENTIALS], - }, -); +createNamespaceChart(app, Namespace.LICENSING); -const config = new LicensingConfig(app, "licensing-config", { +createLicensingApp(app, { + segment: SEGMENT, + imageTag: IMAGE_TAG, namespace: Namespace.LICENSING, - name: "licensing-config", - appConfig: APPLICATION_CONFIG[SEGMENT], }); -if (SEGMENT === Segment.LOC00) { - const pgChart = new PostgresChart(app, "postgres", { - namespace: Namespace.LICENSING, - image: POSTGRES_IMAGE, - name: "licensing-db", - }); - new MigrationJobChart(app, "migration", { - namespace: Namespace.LICENSING, - name: "licensing", - image: IMAGE_NAME, - configMap: config.configMap.name, - postgresSecret: pgChart.secret.name, - applicationSecret: "loc00-application-secret", - serviceAccountName: licensingServiceAccount.serviceAccount.name, - }); - new LicensingChart(app, "licensing", { - namespace: Namespace.LICENSING, - name: "licensing", - applicationSecret: "loc00-application-secret", - configMap: config.configMap.name, - image: IMAGE_NAME, - licensingServicePrivateKey: "loc00-licensing-service-private-key", - postgresSecret: pgChart.secret.name, - segment: SEGMENT, - serviceAccountName: licensingServiceAccount.serviceAccount.name, - shopServicePrivateKey: "loc00-shop-service-private-key", - }); - new IngressNginxChart(app, "ingress-nginx", { - namespace: Namespace.LICENSING, - replicas: 1, - tlsSecret: "loc00-tls-secret", - }); - new EventExportCronJob(app, "event-export", { - namespace: Namespace.LICENSING, - name: "licensing-event-export", - configMap: config.configMap.name, - image: IMAGE_NAME, - mongoAtlasReadonlySecret: undefined, - postgresSecret: pgChart.secret.name, - eventApiSecret: "loc00-data-event-api-secret", - sdwhPostgresSecret: "loc00-sdwh-postgres-secret", - sdwhHostPrivateKey: "loc00-sdwh-host-private-key", - sdwhPrivateIp: "loc00-sdwh-private-ip", - serviceAccountName: licensingServiceAccount.serviceAccount.name, - }); -} else { - new MigrationJobChart(app, "migration", { - namespace: Namespace.LICENSING, - name: "licensing", - image: `${IMAGE_REPO}:${IMAGE_TAG}`, - configMap: config.configMap.name, - postgresSecret: POSTGRES_SECRET, - applicationSecret: APPLICATION_SECRET, - serviceAccountName: licensingServiceAccount.serviceAccount.name, - nodeSelector: APP_NODE_POOL_LABELS, - }); - new LicensingChart(app, "licensing", { - namespace: Namespace.LICENSING, - name: "licensing", - apiResources: DEPLOYMENT_CONFIG[SEGMENT].apiResources, - apiReplicas: DEPLOYMENT_CONFIG[SEGMENT].apiReplicas, - applicationSecret: APPLICATION_SECRET, - configMap: config.configMap.name, - image: `${IMAGE_REPO}:${IMAGE_TAG}`, - licensingServicePrivateKey: LICENSING_SERVICE_PRIVATE_KEY, - postgresSecret: POSTGRES_SECRET, - nodeSelector: APP_NODE_POOL_LABELS, - segment: SEGMENT, - serviceAccountName: licensingServiceAccount.serviceAccount.name, - shopServicePrivateKey: SHOP_SERVICE_PRIVATE_KEY, - }); - new EventExportCronJob(app, "event-export", { - backendSecret: BACKEND_SECRET, - configMap: config.configMap.name, - eventApiSecret: DATA_EVENT_API_SECRET, - image: `${IMAGE_REPO}:${IMAGE_TAG}`, - logformat: 'json', - name: "licensing-event-export", - namespace: Namespace.LICENSING, - mongoAtlasReadonlySecret: MONGO_ATLAS_READONLY_SECRET, - nodeSelector: APP_NODE_POOL_LABELS, - postgresSecret: POSTGRES_SECRET, - resources: DEPLOYMENT_CONFIG[SEGMENT].eventExportResources, - sdwhPostgresSecret: SDWH_POSTGRES_SECRET, - sdwhHostPrivateKey: SDWH_HOST_PRIVATE_KEY, - sdwhPrivateIp: SDWH_PRIVATE_IP, - serviceAccountName: licensingServiceAccount.serviceAccount.name, - }) -} - app.synth(); diff --git a/k8s/package-lock.json b/k8s/package-lock.json index 404581c..36f2e3f 100644 --- a/k8s/package-lock.json +++ b/k8s/package-lock.json @@ -9,43 +9,45 @@ "version": "1.0.0", "license": "Apache-2.0", "dependencies": { - "cdk8s": "2.64.2", - "cdk8s-plus-27": "2.7.0", - "constructs": "10.2.70", - "prettier": "3.3.3", - "ts-node": "10.9.1", - "utility-types": "3.10.0" + "@trivago/prettier-plugin-sort-imports": "5.2.1", + "cdk8s": "2.69.32", + "cdk8s-plus-29": "2.5.17", + "constructs": "10.4.2", + "prettier": "3.4.2", + "ts-node": "10.9.2", + "utility-types": "3.11.0" }, "devDependencies": { - "@types/jest": "29.5.12", - "@types/node": "18.18.4", - "cdk8s-cli": "2.70.0", + "@types/jest": "29.5.14", + "@types/node": "18.19.70", + "cdk8s-cli": "2.198.293", "jest": "29.7.0", "ts-jest": "29.2.5", - "typescript": "5.6.2" + "typescript": "5.7.2" } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", - "dev": true, + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -53,9 +55,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", - "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", + "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", "dev": true, "license": "MIT", "engines": { @@ -63,22 +65,22 @@ } }, "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -98,36 +100,37 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", - "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", - "dev": true, + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", + "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", "license": "MIT", "dependencies": { - "@babel/types": "^7.25.6", + "@babel/parser": "^7.26.3", + "@babel/types": "^7.26.3", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -146,30 +149,29 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", - "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.2" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -179,53 +181,37 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", - "dev": true, + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "dev": true, + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, "license": "MIT", "engines": { @@ -233,111 +219,26 @@ } }, "node_modules/@babel/helpers": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", - "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/parser": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", - "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", - "dev": true, + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", "license": "MIT", "dependencies": { - "@babel/types": "^7.25.6" + "@babel/types": "^7.26.3" }, "bin": { "parser": "bin/babel-parser.js" @@ -351,6 +252,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -363,6 +265,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -375,6 +278,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -382,11 +286,44 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -399,6 +336,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -407,13 +345,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -427,6 +365,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -439,6 +378,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -451,6 +391,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -463,6 +404,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -475,6 +417,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -487,6 +430,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -494,11 +438,28 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -510,13 +471,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", - "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -526,32 +487,30 @@ } }, "node_modules/@babel/template": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", - "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", - "dev": true, + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.25.0", - "@babel/types": "^7.25.0" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", - "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", - "dev": true, + "version": "7.26.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", + "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.6", - "@babel/parser": "^7.25.6", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.6", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.3", + "@babel/parser": "^7.26.3", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.3", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -560,15 +519,13 @@ } }, "node_modules/@babel/types": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", - "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", - "dev": true, + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -581,19 +538,11 @@ "dev": true, "license": "MIT" }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -605,27 +554,18 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", - "optional": true, - "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -642,67 +582,17 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -894,23 +784,6 @@ } } }, - "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -1017,10 +890,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -1032,9 +904,10 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -1043,22 +916,21 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1066,25 +938,27 @@ } }, "node_modules/@jsii/check-node": { - "version": "1.88.0", - "resolved": "https://registry.npmjs.org/@jsii/check-node/-/check-node-1.88.0.tgz", - "integrity": "sha512-AveFyqkJIb8qZvGk5nZal/8mEJB6lWhwqvAQLodHmqE3WzpmZD5+h+aspBVt0El5cEFRJ1k1mrQqhAnJCVpvxg==", + "version": "1.106.0", + "resolved": "https://registry.npmjs.org/@jsii/check-node/-/check-node-1.106.0.tgz", + "integrity": "sha512-/T/TUsbHdEbZRFR4Rem9+UXVvgMYncEkrIeC52oIHJ8BDSgqlDsIARio/Eu5DOftF4avSLV/sshR6n19mpK1oA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "chalk": "^4.1.2", - "semver": "^7.5.4" + "semver": "^7.6.3" }, "engines": { "node": ">= 14.17.0" } }, "node_modules/@jsii/spec": { - "version": "1.88.0", - "resolved": "https://registry.npmjs.org/@jsii/spec/-/spec-1.88.0.tgz", - "integrity": "sha512-Q6xirxPM06TRW0GcsHa+tzPZLwe9I+mFYx5BaNMimcv21u6bQnxfynZMgNhHqvLYCmP37HWg0SboUYTa5JROzw==", + "version": "1.106.0", + "resolved": "https://registry.npmjs.org/@jsii/spec/-/spec-1.106.0.tgz", + "integrity": "sha512-pAIvqEGf0YLmtzFtUKWNEGkCmXMHENy7k+rzCD147wnM4jHhvEL1mEvxi99aA2VcmvLYaAYNOs/XozT+s+kLqQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "ajv": "^8.12.0" + "ajv": "^8.17.1" }, "engines": { "node": ">= 14.17.0" @@ -1094,7 +968,8 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1107,7 +982,8 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -1116,7 +992,8 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1125,184 +1002,90 @@ "node": ">= 8" } }, - "node_modules/@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "optional": true, - "dependencies": { - "@octokit/types": "^6.0.3" - } - }, - "node_modules/@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", - "optional": true, - "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - } + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" }, - "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "optional": true, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "type-detect": "4.0.8" } }, - "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "optional": true, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", - "optional": true - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.21.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", - "optional": true, + "node_modules/@trivago/prettier-plugin-sort-imports": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-5.2.1.tgz", + "integrity": "sha512-NDZndt0fmVThIx/8cExuJHLZagUVzfGCoVrwH9x6aZvwfBdkrDFTYujecek6X2WpG4uUFsVaPg5+aNQPSyjcmw==", + "license": "Apache-2.0", "dependencies": { - "@octokit/types": "^6.40.0" + "@babel/generator": "^7.26.2", + "@babel/parser": "^7.26.2", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", + "javascript-natural-sort": "^0.7.1", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">18.12" }, "peerDependencies": { - "@octokit/core": ">=2" - } - }, - "node_modules/@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "optional": true, - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", - "optional": true, - "dependencies": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" + "@vue/compiler-sfc": "3.x", + "prettier": "2.x - 3.x", + "prettier-plugin-svelte": "3.x", + "svelte": "4.x || 5.x" }, - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "node_modules/@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", - "optional": true, - "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "optional": true, - "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "node_modules/@octokit/rest": { - "version": "18.12.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", - "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", - "optional": true, - "dependencies": { - "@octokit/core": "^3.5.1", - "@octokit/plugin-paginate-rest": "^2.16.8", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^5.12.0" - } - }, - "node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "optional": true, - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + }, + "svelte": { + "optional": true + } } }, "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "license": "MIT" }, "node_modules/@types/babel__core": { "version": "7.20.5", @@ -1340,10 +1123,11 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", - "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" } @@ -1353,38 +1137,42 @@ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { - "version": "29.5.12", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", - "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1393,10 +1181,13 @@ } }, "node_modules/@types/node": { - "version": "18.18.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.4.tgz", - "integrity": "sha512-t3rNFBgJRugIhackit2mVcLfF6IRc0JE4oeizPQL8Zrm8n2WY/0wOdpOPhdtG0V9Q2TlW/axbF1MJ6z+Yj/kKQ==", - "license": "MIT" + "version": "18.19.70", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.70.tgz", + "integrity": "sha512-RE+K0+KZoEpDUbGGctnGdkrLFwi1eYKTlIHNl2Um98mUkGsm1u2Ff6Ltd0e8DktTtC98uy7rSj+hO8t/QuLoVQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/stack-utils": { "version": "2.0.3", @@ -1405,12 +1196,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/triple-beam": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", - "integrity": "sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==", - "optional": true - }, "node_modules/@types/yargs": { "version": "17.0.33", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", @@ -1429,18 +1214,19 @@ "license": "MIT" }, "node_modules/@xmldom/xmldom": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.6.tgz", + "integrity": "sha512-Su4xcxR0CPGwlDHNmVP09fqET9YxbyDXHaSob6JlBH7L6reTYaeim6zbk9o08UarO0L5GTRo3uzl0D+9lSxmvw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=14.6" } }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -1461,29 +1247,17 @@ "node": ">=0.4.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "optional": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -1494,7 +1268,8 @@ "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -1509,7 +1284,8 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1518,7 +1294,8 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1534,6 +1311,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -1545,66 +1323,46 @@ "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "license": "MIT" }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "optional": true, - "engines": { - "node": ">=8" - } - }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "devOptional": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "optional": true + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" }, "node_modules/at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 4.0.0" } }, - "node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "optional": true, - "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -1632,6 +1390,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -1643,6 +1402,33 @@ "node": ">=8" } }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", @@ -1660,23 +1446,27 @@ } }, "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { "@babel/core": "^7.0.0" @@ -1699,109 +1489,41 @@ "@babel/core": "^7.0.0" } }, - "node_modules/backport": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/backport/-/backport-8.5.0.tgz", - "integrity": "sha512-gX8v+l+BTue2lmmqD/yQiR6JUUY+5OWNZTI1qyusViqC9R2iv4YFPqT23IcJfpYqlYb3DOiwunfVjKLickdQ6g==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "@octokit/rest": "^18.12.0", - "axios": "^0.27.2", - "dedent": "^0.7.0", - "del": "^6.1.1", - "dotenv": "^16.0.1", - "find-up": "^5.0.0", - "graphql": "^16.5.0", - "graphql-tag": "^2.12.6", - "inquirer": "^8.2.3", - "lodash": "^4.17.21", - "make-dir": "^3.1.0", - "ora": "^5.4.1", - "safe-json-stringify": "^1.2.0", - "strip-json-comments": "^3.1.1", - "terminal-link": "^2.1.1", - "utility-types": "^3.10.0", - "winston": "^3.7.2", - "yargs": "^17.5.1", - "yargs-parser": "^21.0.1" - }, - "bin": { - "backport": "bin/backport" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "devOptional": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true - }, - "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "optional": true - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "devOptional": true, + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.3.tgz", + "integrity": "sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA==", "dev": true, "funding": [ { @@ -1819,10 +1541,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -1836,6 +1558,7 @@ "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, + "license": "MIT", "dependencies": { "fast-json-stable-stringify": "2.x" }, @@ -1848,34 +1571,11 @@ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -1898,6 +1598,7 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -1906,9 +1607,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001660", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", - "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", + "version": "1.0.30001690", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", + "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", "dev": true, "funding": [ { @@ -1931,14 +1632,15 @@ "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz", "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==", "dev": true, + "license": "(MIT OR GPL-3.0-or-later)", "engines": { "node": ">= 0.8.0" } }, "node_modules/cdk8s": { - "version": "2.64.2", - "resolved": "https://registry.npmjs.org/cdk8s/-/cdk8s-2.64.2.tgz", - "integrity": "sha512-dpMFuWePDM0jZyvACZnOhekIA3mrSnx6KP9VsUg2QhcVIYMekN6HW4DfORu35Fms01V9Wg/eL/qhzIwHVeXdsA==", + "version": "2.69.32", + "resolved": "https://registry.npmjs.org/cdk8s/-/cdk8s-2.69.32.tgz", + "integrity": "sha512-moinwbF/6QcSm/z2h0jD0QvCFm53GVp87YdaNRdKo8BEPHdnJzAQJ0g2hvQVihyBPt8bG9KXGaAKRWs5fczJ2w==", "bundleDependencies": [ "fast-json-patch", "follow-redirects", @@ -1947,41 +1649,39 @@ "license": "Apache-2.0", "dependencies": { "fast-json-patch": "^3.1.1", - "follow-redirects": "^1.15.2", - "yaml": "2.3.2" + "follow-redirects": "^1.15.9", + "yaml": "2.7.0" }, "engines": { "node": ">= 16.20.0" }, - "optionalDependencies": { - "backport": "8.5.0" - }, "peerDependencies": { "constructs": "^10" } }, "node_modules/cdk8s-cli": { - "version": "2.70.0", - "resolved": "https://registry.npmjs.org/cdk8s-cli/-/cdk8s-cli-2.70.0.tgz", - "integrity": "sha512-zS0lv5U3w6Sngo03LBvofmZWzIQOow8bQt6kMXqOKnbu7G4mQ2esIJQNrbnTjsutCi9Y3LCfGgKcZ6DyAuce2g==", + "version": "2.198.293", + "resolved": "https://registry.npmjs.org/cdk8s-cli/-/cdk8s-cli-2.198.293.tgz", + "integrity": "sha512-Qwj8JSznHiAlaTHrcdwZlaUS644bHBx6ckjI84CtRokllALjeDxUqTqOiR0/djKZHqeI3l7sFK+J8yRx2QOZYw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@types/node": "^16", - "ajv": "^8.12.0", - "cdk8s": "^2.64.2", - "cdk8s-plus-25": "^2.22.0", - "codemaker": "^1.88.0", + "ajv": "^8.17.1", + "cdk8s": "^2.69.31", + "cdk8s-plus-28": "^2.5.6", + "codemaker": "^1.106.0", "colors": "1.4.0", - "constructs": "^10.2.70", + "constructs": "^10.4.2", "fs-extra": "^8", - "jsii-pacmak": "^1.88.0", - "jsii-srcmak": "^0.1.951", - "json2jsii": "^0.3.387", - "semver": "^7.5.4", + "jsii-pacmak": "^1.106.0", + "jsii-rosetta": "^5.7.2", + "jsii-srcmak": "0.1.1236", + "json2jsii": "0.5.0", + "semver": "^7.6.3", "sscaff": "^1.2.274", - "table": "^6.8.1", - "yaml": "2.3.2", + "table": "^6.9.0", + "yaml": "2.7.0", "yargs": "^15" }, "bin": { @@ -1989,207 +1689,73 @@ }, "engines": { "node": ">= 16.20.0" - }, - "optionalDependencies": { - "backport": "8.5.0" } }, "node_modules/cdk8s-cli/node_modules/@types/node": { - "version": "16.18.108", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.108.tgz", - "integrity": "sha512-fj42LD82fSv6yN9C6Q4dzS+hujHj+pTv0IpRR3kI20fnYeS0ytBpjFO9OjmDowSPPt4lNKN46JLaKbCyP+BW2A==", + "version": "16.18.123", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.123.tgz", + "integrity": "sha512-/n7I6V/4agSpJtFDKKFEa763Hc1z3hmvchobHS1TisCOTKD5nxq8NJ2iK7SRIMYL276Q9mgWOx2AWp5n2XI6eA==", "dev": true, "license": "MIT" }, - "node_modules/cdk8s-cli/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/cdk8s-plus-28": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/cdk8s-plus-28/-/cdk8s-plus-28-2.5.6.tgz", + "integrity": "sha512-ghANDg6Qmsr3vQlEig7ZDWD03ZPXkjae7ks0HaRy2clIW553mCSTjcZirvuJGaIHDN2OV2S1dLXjdIYuMq3qOA==", + "bundleDependencies": [ + "minimatch" + ], "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^3.1.2" + }, "engines": { - "node": ">=6" + "node": ">= 16.20.0" + }, + "peerDependencies": { + "cdk8s": "^2.68.11", + "constructs": "^10.3.0" } }, - "node_modules/cdk8s-cli/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "node_modules/cdk8s-plus-28/node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/cdk8s-plus-28/node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/cdk8s-plus-28/node_modules/minimatch": { + "version": "3.1.2", "dev": true, + "inBundle": true, "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "node_modules/cdk8s-cli/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/cdk8s-plus-28/node_modules/minimatch/node_modules/brace-expansion": { + "version": "1.1.11", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cdk8s-cli/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cdk8s-cli/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cdk8s-cli/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cdk8s-cli/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cdk8s-cli/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/cdk8s-cli/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cdk8s-cli/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/cdk8s-plus-25": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/cdk8s-plus-25/-/cdk8s-plus-25-2.22.0.tgz", - "integrity": "sha512-IPPBlrT9ctgnCIpdnCG4905ZV+MukBW0KqZHN5HJZf3UVeoi8Hx1JyOJThB2myVHSyj0u1TBrMHlM8EN9KynUA==", - "bundleDependencies": [ - "minimatch" - ], - "dev": true, - "dependencies": { - "minimatch": "^3.1.2" - }, - "engines": { - "node": ">= 16.20.0" - }, - "peerDependencies": { - "cdk8s": "^2.30.0", - "constructs": "^10.2.69" - } - }, - "node_modules/cdk8s-plus-25/node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/cdk8s-plus-25/node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/cdk8s-plus-25/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/cdk8s-plus-25/node_modules/minimatch/node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "inBundle": true, + "inBundle": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/cdk8s-plus-27": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cdk8s-plus-27/-/cdk8s-plus-27-2.7.0.tgz", - "integrity": "sha512-Ii6XKP88+IkARCfecKAimWwrDTK4cSrUylxQAvbQ40Mbro82GqlITyGPVbBjToOc9753dTJUHziwGEp30YIJSQ==", + "node_modules/cdk8s-plus-29": { + "version": "2.5.17", + "resolved": "https://registry.npmjs.org/cdk8s-plus-29/-/cdk8s-plus-29-2.5.17.tgz", + "integrity": "sha512-4c7+Oj89IrUJLYbEJnpE9wIWr8ryqd8sKEty7mwvZ0Rm9md/UkbD36G2GgMOsOdhEeSyCNd5wisKLW+K8UDNhA==", "bundleDependencies": [ "minimatch" ], @@ -2200,25 +1766,22 @@ "engines": { "node": ">= 16.20.0" }, - "optionalDependencies": { - "backport": "8.5.0" - }, "peerDependencies": { - "cdk8s": "^2.30.0", - "constructs": "^10.2.69" + "cdk8s": "^2.68.11", + "constructs": "^10.3.0" } }, - "node_modules/cdk8s-plus-27/node_modules/balanced-match": { + "node_modules/cdk8s-plus-29/node_modules/balanced-match": { "version": "1.0.2", "inBundle": true, "license": "MIT" }, - "node_modules/cdk8s-plus-27/node_modules/concat-map": { + "node_modules/cdk8s-plus-29/node_modules/concat-map": { "version": "0.0.1", "inBundle": true, "license": "MIT" }, - "node_modules/cdk8s-plus-27/node_modules/minimatch": { + "node_modules/cdk8s-plus-29/node_modules/minimatch": { "version": "3.1.2", "inBundle": true, "license": "ISC", @@ -2229,7 +1792,7 @@ "node": "*" } }, - "node_modules/cdk8s-plus-27/node_modules/minimatch/node_modules/brace-expansion": { + "node_modules/cdk8s-plus-29/node_modules/minimatch/node_modules/brace-expansion": { "version": "1.1.11", "inBundle": true, "license": "MIT", @@ -2244,7 +1807,7 @@ "license": "MIT" }, "node_modules/cdk8s/node_modules/follow-redirects": { - "version": "1.15.2", + "version": "1.15.9", "funding": [ { "type": "individual", @@ -2263,9 +1826,12 @@ } }, "node_modules/cdk8s/node_modules/yaml": { - "version": "2.3.2", + "version": "2.7.0", "inBundle": true, "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, "engines": { "node": ">= 14" } @@ -2274,7 +1840,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2296,12 +1863,6 @@ "node": ">=10" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "optional": true - }, "node_modules/ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", @@ -2313,6 +1874,7 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } @@ -2324,77 +1886,16 @@ "dev": true, "license": "MIT" }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "optional": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", - "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", - "optional": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "optional": true, - "engines": { - "node": ">= 10" - } - }, "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "devOptional": true, + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "devOptional": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, "node_modules/clone": { @@ -2402,6 +1903,7 @@ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8" } @@ -2418,10 +1920,11 @@ } }, "node_modules/codemaker": { - "version": "1.88.0", - "resolved": "https://registry.npmjs.org/codemaker/-/codemaker-1.88.0.tgz", - "integrity": "sha512-/7+1mPQCEFmBm9zhf5blMiqirCcXNwulb8dozu2LVsDLgnafPt1h2eg/OwvyrqSMWUnsIFetAssKVP2gE66MPQ==", + "version": "1.106.0", + "resolved": "https://registry.npmjs.org/codemaker/-/codemaker-1.106.0.tgz", + "integrity": "sha512-1aLNQCF/3DVxXol6eRqoLZnYulAwWPGq8BMF8pMZu+CaNkR7c0T5otMcbAXcskRLChiFt+BjVWS3JPVeBOHD4w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "camelcase": "^6.3.0", "decamelize": "^5.0.1", @@ -2436,6 +1939,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -2450,6 +1954,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -2458,10 +1963,11 @@ } }, "node_modules/codemaker/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -2473,21 +1979,12 @@ "dev": true, "license": "MIT" }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "optional": true, - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -2499,74 +1996,29 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "optional": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "optional": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "optional": true + "dev": true, + "license": "MIT" }, "node_modules/colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.1.90" } }, - "node_modules/colorspace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", - "optional": true, - "dependencies": { - "color": "^3.1.3", - "text-hex": "1.0.x" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "optional": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commonmark": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.30.0.tgz", - "integrity": "sha512-j1yoUo4gxPND1JWV9xj5ELih0yMv1iCWDG6eEQIPLSWLxzCXiFoyS7kvB+WwU+tZMf4snwJMMtaubV0laFpiBA==", + "version": "0.31.2", + "resolved": "https://registry.npmjs.org/commonmark/-/commonmark-0.31.2.tgz", + "integrity": "sha512-2fRLTyb9r/2835k5cwcAwOj0DEc44FARnMp5veGsJ+mEAZdi52sNopLu07ZyElQUz058H43whzlERDIaaSw4rg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "entities": "~2.0", + "entities": "~3.0.1", "mdurl": "~1.0.1", - "minimist": ">=1.2.2", - "string.prototype.repeat": "^0.2.0" + "minimist": "~1.2.8" }, "bin": { "commonmark": "bin/commonmark" @@ -2579,16 +2031,14 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "devOptional": true + "dev": true, + "license": "MIT" }, "node_modules/constructs": { - "version": "10.2.70", - "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.2.70.tgz", - "integrity": "sha512-z6zr1E8K/9tzJbCQzY0UGX0/oVKPFKu9C/mzEnghCG6TAJINnvlq0CMKm63XqqeMleadZYm5T3sZGJKcxJS/Pg==", - "license": "Apache-2.0", - "engines": { - "node": ">= 16.14.0" - } + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.4.2.tgz", + "integrity": "sha512-wsNxBlAott2qg8Zv87q3eYZYgheb9lchtBfjHzzLHtXbttwSrHPs1NNQbBrmbb1YZvYg2+Vh0Dor76w4mFxJkA==", + "license": "Apache-2.0" }, "node_modules/convert-source-map": { "version": "2.0.0", @@ -2622,12 +2072,13 @@ "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "license": "MIT" }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -2644,17 +2095,18 @@ "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0" } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -2670,6 +2122,7 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -2678,84 +2131,36 @@ } }, "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "optional": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "optional": true, - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defaults/node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "optional": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "optional": true, - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "optional": true, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">=0.10.0" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "optional": true - }, "node_modules/detect-indent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -2774,6 +2179,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -2788,45 +2194,23 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "optional": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/dot-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, - "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "optional": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, "node_modules/downlevel-dts": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/downlevel-dts/-/downlevel-dts-0.11.0.tgz", "integrity": "sha512-vo835pntK7kzYStk7xUHDifiYJvXxVhUapt85uk2AI94gUUAQX9HNRtrcMHNSc3YHJUEHGbYIGsM99uIbgAtxw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.3.2", "shelljs": "^0.8.3", @@ -2853,9 +2237,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.19", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.19.tgz", - "integrity": "sha512-kpLJJi3zxTR1U828P+LIUDZ5ohixyo68/IcYOHLqnbTPr/wdgn4i1ECvmALN9E16JPA6cvCG5UG79gVwVdEK5w==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "dev": true, "license": "ISC" }, @@ -2876,19 +2260,21 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "devOptional": true - }, - "node_modules/enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", - "optional": true + "dev": true, + "license": "MIT" }, "node_modules/entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, "node_modules/error-ex": { "version": "1.3.2", @@ -2904,19 +2290,23 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "devOptional": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/esprima": { @@ -2924,6 +2314,7 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -2982,37 +2373,25 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "optional": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "devOptional": true, + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -3022,13 +2401,32 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", + "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "devOptional": true, + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -3038,31 +2436,11 @@ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", - "optional": true - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "optional": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -3097,10 +2475,11 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "devOptional": true, + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -3109,72 +2488,32 @@ } }, "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "optional": true, + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", + "locate-path": "^5.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", - "optional": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "optional": true, - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" }, "node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -3188,7 +2527,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "devOptional": true + "dev": true, + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", @@ -3196,6 +2536,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3205,16 +2546,21 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -3223,7 +2569,8 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "devOptional": true, + "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -3233,6 +2580,7 @@ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.0.0" } @@ -3254,7 +2602,9 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "devOptional": true, + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3274,7 +2624,8 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "devOptional": true, + "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -3286,91 +2637,41 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "optional": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "devOptional": true - }, - "node_modules/graphql": { - "version": "16.8.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.0.tgz", - "integrity": "sha512-0oKGaR+y3qcS5mCu1vb7KG+a89vjn06C7Ihq/dDl3jA+A8B3TKomvi3CiEcVLJQGalbu8F52LxkOym7U5sSfbg==", - "optional": true, - "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" - } - }, - "node_modules/graphql-tag": { - "version": "2.12.6", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", - "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", - "optional": true, - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } + "license": "ISC" }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -3388,64 +2689,24 @@ "node": ">=10.17.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "optional": true, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "optional": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/imurmurhash": { @@ -3458,20 +2719,13 @@ "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "optional": true, - "engines": { - "node": ">=8" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "devOptional": true, + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -3481,39 +2735,15 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "devOptional": true - }, - "node_modules/inquirer": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", - "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", - "optional": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^6.0.1" - }, - "engines": { - "node": ">=12.0.0" - } + "dev": true, + "license": "ISC" }, "node_modules/interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -3526,39 +2756,27 @@ "license": "MIT" }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "is-docker": "cli.js" + "hasown": "^2.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -3567,7 +2785,8 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3586,7 +2805,8 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -3594,56 +2814,22 @@ "node": ">=0.10.0" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "optional": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -3651,70 +2837,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "semver": "^7.5.4" }, "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": ">=10" } }, "node_modules/istanbul-lib-report": { @@ -3732,22 +2886,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", @@ -3763,6 +2901,16 @@ "node": ">=10" } }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/istanbul-reports": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", @@ -3796,6 +2944,12 @@ "node": ">=10" } }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "license": "MIT" + }, "node_modules/jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", @@ -3870,21 +3024,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus/node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, "node_modules/jest-cli": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", @@ -3919,6 +3058,68 @@ } } }, + "node_modules/jest-cli/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-cli/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/jest-config": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", @@ -4385,7 +3586,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, "license": "MIT" }, "node_modules/js-yaml": { @@ -4393,6 +3593,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -4402,61 +3603,61 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/jsii": { - "version": "1.88.0", - "resolved": "https://registry.npmjs.org/jsii/-/jsii-1.88.0.tgz", - "integrity": "sha512-WKfwHbcEI/j5OYDPexvkH8KKDcTZR7tIBFNTxu8h1Nh3G8xFT4hh3pObUUSMRCa6rsSF9EHGjS+AKC+TfpFGrQ==", + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/jsii/-/jsii-5.7.4.tgz", + "integrity": "sha512-L2JWl4ETXjXCe25t8vg0lFQ0ycqtMuGDd0j0kSxKNFO/g19c3mW5wcClPZF1YD1fG5VIHG4t9ZGJ8ZU8H7tZMg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@jsii/check-node": "1.88.0", - "@jsii/spec": "^1.88.0", + "@jsii/check-node": "1.106.0", + "@jsii/spec": "^1.106.0", "case": "^1.6.3", "chalk": "^4", "fast-deep-equal": "^3.1.3", - "fs-extra": "^10.1.0", "log4js": "^6.9.1", - "semver": "^7.5.4", - "semver-intersect": "^1.4.0", + "semver": "^7.6.3", + "semver-intersect": "^1.5.0", "sort-json": "^2.0.1", - "spdx-license-list": "^6.6.0", - "typescript": "~3.9.10", - "yargs": "^16.2.0" + "spdx-license-list": "^6.9.0", + "typescript": "~5.7", + "yargs": "^17.7.2" }, "bin": { "jsii": "bin/jsii" }, "engines": { - "node": ">= 14.17.0" + "node": ">= 18.12.0" } }, "node_modules/jsii-pacmak": { - "version": "1.88.0", - "resolved": "https://registry.npmjs.org/jsii-pacmak/-/jsii-pacmak-1.88.0.tgz", - "integrity": "sha512-nanfSaYpe2lgOzvosup4iObQ76tCs47+rERUUGFyrCq7sruQ7VMYgRdAuGWh8PqF9fGNwq6Do1eR+EMC+d4WUg==", + "version": "1.106.0", + "resolved": "https://registry.npmjs.org/jsii-pacmak/-/jsii-pacmak-1.106.0.tgz", + "integrity": "sha512-cNSzPszHaFg5AYwOQhp+eM/KpOJupdeyyycrzR6AtxwSmRN6x4K7YybZY/Rk0zfqGds9ukOYv0euGLZuXzXt1w==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@jsii/check-node": "1.88.0", - "@jsii/spec": "^1.88.0", + "@jsii/check-node": "1.106.0", + "@jsii/spec": "^1.106.0", "clone": "^2.1.2", - "codemaker": "^1.88.0", - "commonmark": "^0.30.0", + "codemaker": "^1.106.0", + "commonmark": "^0.31.2", "escape-string-regexp": "^4.0.0", "fs-extra": "^10.1.0", - "jsii-reflect": "^1.88.0", - "jsii-rosetta": "^1.88.0", - "semver": "^7.5.4", - "spdx-license-list": "^6.6.0", + "jsii-reflect": "^1.106.0", + "semver": "^7.6.3", + "spdx-license-list": "^6.9.0", "xmlbuilder": "^15.1.1", "yargs": "^16.2.0" }, @@ -4465,6 +3666,9 @@ }, "engines": { "node": ">= 14.17.0" + }, + "peerDependencies": { + "jsii-rosetta": ">=5.4.0" } }, "node_modules/jsii-pacmak/node_modules/cliui": { @@ -4472,29 +3676,19 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, - "node_modules/jsii-pacmak/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jsii-pacmak/node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -4509,6 +3703,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -4517,10 +3712,11 @@ } }, "node_modules/jsii-pacmak/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -4530,6 +3726,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -4542,11 +3739,22 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/jsii-pacmak/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/jsii-pacmak/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -4565,21 +3773,23 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/jsii-reflect": { - "version": "1.88.0", - "resolved": "https://registry.npmjs.org/jsii-reflect/-/jsii-reflect-1.88.0.tgz", - "integrity": "sha512-YYZTEQpayvwMDtRMCjgNraTFUqsj4/KEOE8ChvDCkpxv6aH89vpZSsAJM5ymhNLDHj4XZ2OW3XE0sNOz31NbvA==", + "version": "1.106.0", + "resolved": "https://registry.npmjs.org/jsii-reflect/-/jsii-reflect-1.106.0.tgz", + "integrity": "sha512-3t+a8kT4G5fYnQAM7eS8bgUpK+Vj1sFgABqLIC2Oae+8rUb6J+v7xTSvqWEOlO0FI608/BwalWsXsvW+Mtogmw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@jsii/check-node": "1.88.0", - "@jsii/spec": "^1.88.0", + "@jsii/check-node": "1.106.0", + "@jsii/spec": "^1.106.0", "chalk": "^4", "fs-extra": "^10.1.0", - "oo-ascii-tree": "^1.88.0", + "oo-ascii-tree": "^1.106.0", "yargs": "^16.2.0" }, "bin": { @@ -4594,6 +3804,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -4605,6 +3816,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -4619,6 +3831,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -4627,10 +3840,11 @@ } }, "node_modules/jsii-reflect/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -4640,6 +3854,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -4652,11 +3867,22 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/jsii-reflect/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/jsii-reflect/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -4675,58 +3901,52 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/jsii-rosetta": { - "version": "1.88.0", - "resolved": "https://registry.npmjs.org/jsii-rosetta/-/jsii-rosetta-1.88.0.tgz", - "integrity": "sha512-6xRRkwWUKFqDTnjgCXkB6v9dxA51KUD4Cd7InLB4qirMBDuMtyYhYVNc1yJbHPYs9gkN5/ao0dFk+1CQxt7T7g==", - "dev": true, - "dependencies": { - "@jsii/check-node": "1.88.0", - "@jsii/spec": "1.88.0", - "@xmldom/xmldom": "^0.8.10", - "commonmark": "^0.30.0", - "fast-glob": "^3.3.1", - "jsii": "1.88.0", - "semver": "^7.5.4", - "semver-intersect": "^1.4.0", - "stream-json": "^1.8.0", - "typescript": "~3.9.10", - "workerpool": "^6.4.2", - "yargs": "^16.2.0" + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/jsii-rosetta/-/jsii-rosetta-5.7.2.tgz", + "integrity": "sha512-03OVxIEj7aI+yTkO0TT8Jg6PgKOYnceTka6ZN1CMScItpJJt+JA91Qr/4G/0DYQzfBwTORoctbF4uJksQIDvYQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsii/check-node": "1.106.0", + "@jsii/spec": "^1.106.0", + "@xmldom/xmldom": "^0.9.6", + "chalk": "^4", + "commonmark": "^0.31.2", + "fast-glob": "^3.3.2", + "jsii": "~5.7.0", + "semver": "^7.6.3", + "semver-intersect": "^1.5.0", + "stream-json": "^1.9.1", + "typescript": "~5.7", + "workerpool": "^6.5.1", + "yargs": "^17.7.2" }, "bin": { "jsii-rosetta": "bin/jsii-rosetta" }, "engines": { - "node": ">= 14.17.0" + "node": ">= 18.12.0" } }, "node_modules/jsii-rosetta/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" - } - }, - "node_modules/jsii-rosetta/node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=12" } }, "node_modules/jsii-rosetta/node_modules/wrap-ansi": { @@ -4734,6 +3954,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -4746,78 +3967,66 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/jsii-rosetta/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/jsii-rosetta/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" - } - }, - "node_modules/jsii-rosetta/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/jsii-srcmak": { - "version": "0.1.951", - "resolved": "https://registry.npmjs.org/jsii-srcmak/-/jsii-srcmak-0.1.951.tgz", - "integrity": "sha512-zaKqrsR416yX+QhE1T4mkBWqPpsHQmBnBbsR0f5a32Uknr3+l4PCVtuV5/rgthAG6iE4Pa6c/jO0vcTzyzEY6A==", + "version": "0.1.1236", + "resolved": "https://registry.npmjs.org/jsii-srcmak/-/jsii-srcmak-0.1.1236.tgz", + "integrity": "sha512-tnVMEbT1m8KdUgky56KZXT7vdLJjLmAclzSo2H59MCNUcp6eHfBxFQFyHJpXsS0B77vc8tHTMUlo4qoISuts3A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "fs-extra": "^9.1.0", - "jsii": "~5.1.10", - "jsii-pacmak": "^1.87.0", + "jsii": "~5.5.3", + "jsii-pacmak": "^1.103.1", + "jsii-rosetta": "^5.5.4", "ncp": "^2.0.0", - "yargs": "^15.4.1" + "yargs": "^17.7.2" }, "bin": { "jsii-srcmak": "bin/jsii-srcmak" } }, - "node_modules/jsii-srcmak/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsii-srcmak/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jsii-srcmak/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/jsii-srcmak/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, "node_modules/jsii-srcmak/node_modules/fs-extra": { @@ -4825,6 +4034,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -4836,48 +4046,31 @@ } }, "node_modules/jsii-srcmak/node_modules/jsii": { - "version": "5.1.12", - "resolved": "https://registry.npmjs.org/jsii/-/jsii-5.1.12.tgz", - "integrity": "sha512-iY3zLosUEKbeua6IAGJXjFxibiiI0xHFjyYPyewOc56MBRHC7nczWSVGRP+Jgwyo7HWXs4TvJKLG6w8zSuAZrg==", + "version": "5.5.17", + "resolved": "https://registry.npmjs.org/jsii/-/jsii-5.5.17.tgz", + "integrity": "sha512-m96OHVpJJfhRueSdFrySJ2dTmWVZH2D4jjviaRorqo+fuxR4gqggbwsatIInW0H/lvRYndG1ZAjTso9JUvWyoQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@jsii/check-node": "1.88.0", - "@jsii/spec": "^1.88.0", + "@jsii/check-node": "1.106.0", + "@jsii/spec": "^1.106.0", "case": "^1.6.3", "chalk": "^4", "downlevel-dts": "^0.11.0", "fast-deep-equal": "^3.1.3", "log4js": "^6.9.1", - "semver": "^7.5.4", - "semver-intersect": "^1.4.0", + "semver": "^7.6.3", + "semver-intersect": "^1.5.0", "sort-json": "^2.0.1", - "spdx-license-list": "^6.6.0", - "typescript": "~5.1.6", + "spdx-license-list": "^6.9.0", + "typescript": "~5.5", "yargs": "^17.7.2" }, "bin": { "jsii": "bin/jsii" }, "engines": { - "node": ">= 16.14.0" - } - }, - "node_modules/jsii-srcmak/node_modules/jsii/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" + "node": ">= 18.12.0" } }, "node_modules/jsii-srcmak/node_modules/jsonfile": { @@ -4885,6 +4078,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, + "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -4892,50 +4086,12 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsii-srcmak/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jsii-srcmak/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jsii-srcmak/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jsii-srcmak/node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -4945,130 +4101,83 @@ } }, "node_modules/jsii-srcmak/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10.0.0" } }, - "node_modules/jsii-srcmak/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "node_modules/jsii-srcmak/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/jsii-srcmak/node_modules/yargs/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "node_modules/jsii-srcmak/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "license": "ISC", + "engines": { + "node": ">=10" } }, - "node_modules/jsii-srcmak/node_modules/yargs/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/jsii-srcmak/node_modules/yargs/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "node_modules/jsii-srcmak/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=6" + "node": ">=12" } }, "node_modules/jsii/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" - } - }, - "node_modules/jsii/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" }, "engines": { "node": ">=12" } }, - "node_modules/jsii/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsii/node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/jsii/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/jsii/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -5081,31 +4190,33 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/jsii/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/jsii/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" - } - }, - "node_modules/jsii/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/json-parse-even-better-errors": { @@ -5119,26 +4230,26 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json2jsii": { - "version": "0.3.387", - "resolved": "https://registry.npmjs.org/json2jsii/-/json2jsii-0.3.387.tgz", - "integrity": "sha512-tIyEL9nPXjmKQF73eXSqLMNwzRsj9s2qaLeohIqXxD/l0QCYqPJJIxDpQG+sF6t+/axJYdpprljF34qQKDd3rg==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/json2jsii/-/json2jsii-0.5.0.tgz", + "integrity": "sha512-KU1W63OO4hKK5mhYxRmoVY8qbw3igOLlPsq8o6nFZBHdD0ZQEghVbV604wB/pY0ofZPp1Hy92jkFjo6xsMUNEA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "camelcase": "^6.3.0", "json-schema": "^0.4.0", "snake-case": "^3.0.4" - }, - "engines": { - "node": ">= 16.14.0" } }, "node_modules/json5": { @@ -5146,6 +4257,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -5158,6 +4270,7 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, + "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -5172,12 +4285,6 @@ "node": ">=6" } }, - "node_modules/kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", - "optional": true - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -5196,59 +4303,44 @@ "license": "MIT" }, "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "optional": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "optional": true + "license": "MIT" }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "optional": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "dev": true, + "license": "MIT" }, "node_modules/log4js": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", "dev": true, + "license": "Apache-2.0", "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -5260,25 +4352,12 @@ "node": ">=8.0" } }, - "node_modules/logform": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", - "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", - "optional": true, - "dependencies": { - "@colors/colors": "1.5.0", - "@types/triple-beam": "^1.3.2", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - } - }, "node_modules/lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -5294,39 +4373,33 @@ } }, "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "optional": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "optional": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "license": "ISC" }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" } @@ -5335,7 +4408,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge-stream": { "version": "2.0.0", @@ -5348,50 +4422,32 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "devOptional": true, + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "optional": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "optional": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5400,7 +4456,8 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "devOptional": true, + "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -5413,21 +4470,16 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "devOptional": true - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "optional": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", @@ -5441,6 +4493,7 @@ "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", "dev": true, + "license": "MIT", "bin": { "ncp": "bin/ncp" } @@ -5450,79 +4503,23 @@ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, + "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "optional": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "optional": true - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "optional": true - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "optional": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-notifier": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", - "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - } + "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true, "license": "MIT" }, @@ -5531,6 +4528,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5552,25 +4550,18 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "devOptional": true, + "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } }, - "node_modules/one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "optional": true, - "dependencies": { - "fn.name": "1.x.x" - } - }, "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -5582,51 +4573,21 @@ } }, "node_modules/oo-ascii-tree": { - "version": "1.88.0", - "resolved": "https://registry.npmjs.org/oo-ascii-tree/-/oo-ascii-tree-1.88.0.tgz", - "integrity": "sha512-A7m3z7XlUD3DnXSYxWmAdKQTIY6+1JzWS0lhaqgPGhj6g7a/odCsV1ctaRnjJljCB3zQBrbp2QHdYTUsD9AXcQ==", + "version": "1.106.0", + "resolved": "https://registry.npmjs.org/oo-ascii-tree/-/oo-ascii-tree-1.106.0.tgz", + "integrity": "sha512-0PZkjIiJUW3jEx7durxcri7JciR8VbJpf2K3qiVbGG4x0MTq6Xm/H84GjBI6tamSx/DV1PMFDfwMs3hm8zfOCw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">= 14.17.0" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "optional": true, - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -5638,30 +4599,29 @@ } }, "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "optional": true, + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "optional": true, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", "dependencies": { - "aggregate-error": "^3.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5672,6 +4632,7 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5699,7 +4660,8 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5708,7 +4670,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5727,29 +4690,21 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "optional": true, - "engines": { - "node": ">=8" - } + "dev": true, + "license": "MIT" }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", - "dev": true, + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -5762,6 +4717,7 @@ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } @@ -5771,6 +4727,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -5778,62 +4735,10 @@ "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -5887,15 +4792,6 @@ "node": ">= 6" } }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/pure-rand": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", @@ -5917,7 +4813,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "devOptional": true, + "dev": true, "funding": [ { "type": "github", @@ -5931,7 +4827,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/react-is": { "version": "18.3.1", @@ -5940,20 +4837,6 @@ "dev": true, "license": "MIT" }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "optional": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -5970,7 +4853,8 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5980,6 +4864,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5988,21 +4873,26 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, + "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6012,6 +4902,7 @@ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, + "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -6024,109 +4915,44 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, "license": "MIT", "engines": { "node": ">=10" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "optional": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "optional": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "optional": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "devOptional": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "optional": true, - "dependencies": { - "tslib": "^2.1.0" - } + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, "funding": [ { "type": "github", @@ -6141,29 +4967,11 @@ "url": "https://feross.org/support" } ], - "optional": true - }, - "node_modules/safe-json-stringify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", - "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", - "optional": true - }, - "node_modules/safe-stable-stringify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", - "optional": true, - "engines": { - "node": ">=10" + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "optional": true - }, "node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -6178,28 +4986,31 @@ } }, "node_modules/semver-intersect": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", - "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.5.0.tgz", + "integrity": "sha512-BDjWX7yCC0haX4W/zrnV2JaMpVirwaEkGOBmgRQtH++F1N3xl9v7k9H44xfTqwl+yLNNSbMKosoVSTIiJVQ2Pw==", "dev": true, + "license": "MIT", "dependencies": { - "semver": "^5.0.0" + "semver": "^6.3.0" } }, "node_modules/semver-intersect/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" } }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/shebang-command": { "version": "2.0.0", @@ -6229,6 +5040,7 @@ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -6241,34 +5053,12 @@ "node": ">=4" } }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "devOptional": true - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "optional": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "optional": true + "dev": true, + "license": "ISC" }, "node_modules/sisteransi": { "version": "1.0.5", @@ -6281,7 +5071,8 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6291,6 +5082,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -6308,6 +5100,7 @@ "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -6318,6 +5111,7 @@ "resolved": "https://registry.npmjs.org/sort-json/-/sort-json-2.0.1.tgz", "integrity": "sha512-s8cs2bcsQCzo/P2T/uoU6Js4dS/jnX8+4xunziNoq9qmSpZNCrRIAIvp4avsz0ST18HycV4z/7myJ7jsHWB2XQ==", "dev": true, + "license": "MIT", "dependencies": { "detect-indent": "^5.0.0", "detect-newline": "^2.1.0", @@ -6332,16 +5126,7 @@ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", "integrity": "sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==", "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6357,11 +5142,22 @@ "source-map": "^0.6.0" } }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/spdx-license-list": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/spdx-license-list/-/spdx-license-list-6.7.0.tgz", - "integrity": "sha512-NFqavuJxNsHdwSy/0PjmUpcc76XwlmHQRPjVVtE62qmSLhKJUnzSvJCkU9nrY6TsChfGU1xqGePriBkNtNRMiA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/spdx-license-list/-/spdx-license-list-6.9.0.tgz", + "integrity": "sha512-L2jl5vc2j6jxWcNCvcVj/BW9A8yGIG02Dw+IUw0ZxDM70f7Ylf5Hq39appV1BI9yxyWQRpq2TQ1qaXvf+yjkqA==", "dev": true, + "license": "CC0-1.0", "engines": { "node": ">=8" }, @@ -6373,26 +5169,19 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/sscaff": { "version": "1.2.274", "resolved": "https://registry.npmjs.org/sscaff/-/sscaff-1.2.274.tgz", "integrity": "sha512-sztRa50SL1LVxZnF1au6QT1SC2z0S1oEOyi2Kpnlg6urDns93aL32YxiJcNkLcY+VHFtVqm/SRv4cb+6LeoBQA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">= 12.13.0" } }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "optional": true, - "engines": { - "node": "*" - } - }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -6420,13 +5209,15 @@ "version": "2.2.5", "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/stream-json": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.8.0.tgz", - "integrity": "sha512-HZfXngYHUAr1exT4fxlbc1IOce1RYxp2ldeaf97LYCOPSoOqY/1Psp7iGvpb+6JIOgkra9zDYnPX01hGAHzEPw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz", + "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "stream-chain": "^2.2.5" } @@ -6436,6 +5227,7 @@ "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, + "license": "MIT", "dependencies": { "date-format": "^4.0.14", "debug": "^4.3.4", @@ -6445,15 +5237,6 @@ "node": ">=8.0" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", @@ -6472,7 +5255,8 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6482,17 +5266,12 @@ "node": ">=8" } }, - "node_modules/string.prototype.repeat": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz", - "integrity": "sha512-1BH+X+1hSthZFW+X+JaUkjkkUPwIlLEMJBLANN3hOob3RhEk5snLWNECDnYbgn/m5c5JV7Ersu1Yubaf+05cIA==", - "dev": true - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -6524,7 +5303,8 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -6536,7 +5316,8 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -6544,24 +5325,12 @@ "node": ">=8" } }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "optional": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6570,10 +5339,11 @@ } }, "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -6585,27 +5355,12 @@ "node": ">=10.0.0" } }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "optional": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -6615,50 +5370,19 @@ "node": ">=8" } }, - "node_modules/text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "optional": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "optional": true - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "optional": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, - "engines": { - "node": ">=4" - } + "license": "BSD-3-Clause" }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -6666,15 +5390,6 @@ "node": ">=8.0" } }, - "node_modules/triple-beam": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", - "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", - "optional": true, - "engines": { - "node": ">= 14.0.0" - } - }, "node_modules/ts-jest": { "version": "29.2.5", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", @@ -6725,9 +5440,9 @@ } }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -6768,10 +5483,11 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "devOptional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, "node_modules/type-detect": { "version": "4.0.8", @@ -6787,7 +5503,8 @@ "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "devOptional": true, + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -6796,9 +5513,9 @@ } }, "node_modules/typescript": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", - "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -6808,25 +5525,26 @@ "node": ">=14.17" } }, - "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "optional": true + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "license": "MIT" }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", "dev": true, "funding": [ { @@ -6844,8 +5562,8 @@ ], "license": "MIT", "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -6854,45 +5572,20 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "optional": true - }, "node_modules/utility-types": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", - "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", "license": "MIT", "engines": { "node": ">= 4" } }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "license": "MIT" }, "node_modules/v8-to-istanbul": { "version": "9.3.0", @@ -6914,24 +5607,17 @@ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "optional": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -6946,55 +5632,22 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true - }, - "node_modules/winston": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.10.0.tgz", - "integrity": "sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g==", - "optional": true, - "dependencies": { - "@colors/colors": "1.5.0", - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.4.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", - "optional": true, - "dependencies": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 6.4.0" - } + "dev": true, + "license": "ISC" }, "node_modules/workerpool": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.4.2.tgz", - "integrity": "sha512-MrDWwemtC4xNV22kbbZDQQQmxNX+yLm790sgYl2wVD3CWnK7LJY1youI/11wHorAjHjK+GEjUxUh74XoPU71uQ==", - "dev": true + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -7008,7 +5661,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "devOptional": true + "dev": true, + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "4.0.2", @@ -7029,18 +5683,17 @@ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.0" } }, "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "devOptional": true, - "engines": { - "node": ">=10" - } + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true, + "license": "ISC" }, "node_modules/yallist": { "version": "3.1.1", @@ -7050,45 +5703,90 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", - "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, "engines": { "node": ">= 14" } }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "devOptional": true, + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" }, "engines": { - "node": ">=12" + "node": ">=8" } }, "node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "devOptional": true, + "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, + "node_modules/yargs/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "license": "MIT", "engines": { "node": ">=6" } @@ -7097,7 +5795,8 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "devOptional": true, + "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, diff --git a/k8s/package.json b/k8s/package.json index c7b54c4..f18f668 100644 --- a/k8s/package.json +++ b/k8s/package.json @@ -8,28 +8,29 @@ "scripts": { "import": "cdk8s import", "synth": "cdk8s synth", - "compile": "tsc --build", - "watch": "tsc --build -w", + "compile": "tsc", + "watch": "tsc -w", "test": "jest", "build": "npm run test && npm run synth", "upgrade": "npm i cdk8s@latest cdk8s-cli@latest", "upgrade:next": "npm i cdk8s@next cdk8s-cli@next", - "prettier": "prettier --write ." + "prettier": "prettier --plugin=@trivago/prettier-plugin-sort-imports --write ." }, "dependencies": { - "cdk8s": "2.64.2", - "cdk8s-plus-27": "2.7.0", - "constructs": "10.2.70", - "prettier": "3.3.3", - "ts-node": "10.9.1", - "utility-types": "3.10.0" + "@trivago/prettier-plugin-sort-imports": "5.2.1", + "cdk8s": "2.69.32", + "cdk8s-plus-29": "2.5.17", + "constructs": "10.4.2", + "prettier": "3.4.2", + "ts-node": "10.9.2", + "utility-types": "3.11.0" }, "devDependencies": { - "@types/jest": "29.5.12", - "@types/node": "18.18.4", - "cdk8s-cli": "2.70.0", + "@types/jest": "29.5.14", + "@types/node": "18.19.70", + "cdk8s-cli": "2.198.293", "jest": "29.7.0", "ts-jest": "29.2.5", - "typescript": "5.6.2" + "typescript": "5.7.2" } } diff --git a/k8s/tests/__snapshots__/ingress-nginx-chart.test.ts.snap b/k8s/tests/__snapshots__/ingress-nginx-chart.test.ts.snap new file mode 100644 index 0000000..ebf4341 --- /dev/null +++ b/k8s/tests/__snapshots__/ingress-nginx-chart.test.ts.snap @@ -0,0 +1,38 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`ingress-nginx-chart with tls 1`] = ` +[ + { + "apiVersion": "networking.k8s.io/v1", + "kind": "Ingress", + "metadata": { + "name": "licensing-ingress", + "namespace": "dummy-namespace", + }, + "spec": { + "ingressClassName": "loc00-nginx", + "rules": [ + { + "host": "licensing.bettermarks.loc", + "http": { + "paths": [ + { + "backend": { + "service": { + "name": "licensing-api", + "port": { + "number": 80, + }, + }, + }, + "path": "/", + "pathType": "Prefix", + }, + ], + }, + }, + ], + }, + }, +] +`; diff --git a/k8s/tests/__snapshots__/licensing-app.test.ts.snap b/k8s/tests/__snapshots__/licensing-app.test.ts.snap new file mode 100644 index 0000000..dd101b4 --- /dev/null +++ b/k8s/tests/__snapshots__/licensing-app.test.ts.snap @@ -0,0 +1,3019 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Licensing at ci00 should match chart for licensing secrets 1`] = ` +[ + { + "apiVersion": "external-secrets.io/v1beta1", + "kind": "ExternalSecret", + "metadata": { + "name": "ext-licensing", + "namespace": "licensing", + }, + "spec": { + "data": [ + { + "remoteRef": { + "decodingStrategy": "Base64", + "key": "licensing/ci00/licensing-service-private-key", + "property": "LICENSING_SERVICE_PRIVATE_KEY", + }, + "secretKey": "LICENSING_SERVICE_PRIVATE_KEY", + }, + ], + "dataFrom": [ + { + "extract": { + "key": "stackit/ci00-pg-cluster-licensing/credentials", + }, + }, + { + "extract": { + "key": "licensing/ci00/credentials", + }, + }, + ], + "refreshInterval": "1h", + "secretStoreRef": { + "kind": "ClusterSecretStore", + "name": "stackit-secrets-manager", + }, + "target": { + "name": "licensing", + }, + }, + }, + { + "apiVersion": "external-secrets.io/v1beta1", + "kind": "ExternalSecret", + "metadata": { + "name": "ext-event-export", + "namespace": "licensing", + }, + "spec": { + "data": [ + { + "remoteRef": { + "key": "backend/ci00/credentials", + "property": "BM_ENCRYPTION_PASSWORD", + }, + "secretKey": "BM_ENCRYPTION_PASSWORD", + }, + { + "remoteRef": { + "key": "stackit/ci00/application/readonly-secret", + "property": "MONGODB_URI", + }, + "secretKey": "MONGODB_URI", + }, + ], + "dataFrom": [ + { + "extract": { + "key": "stackit/ci00-pg-cluster-licensing/credentials", + }, + }, + ], + "refreshInterval": "1h", + "secretStoreRef": { + "kind": "ClusterSecretStore", + "name": "stackit-secrets-manager", + }, + "target": { + "name": "event-export", + }, + }, + }, +] +`; + +exports[`Licensing at ci00 should match snapshot for configmap 1`] = ` +[ + { + "apiVersion": "v1", + "data": { + "APM_ENABLED": "true", + "APM_TRANSACTION_SAMPLE_RATE": "0.1", + "APM_URL": "https://apm.bettermarks.com", + "EVENTS_EXPORT_EXPORT_HOOK": "services.licensing.export.bettermarks_export.modified_event", + "EVENTS_EXPORT_FUNCTION": "services.licensing.export.bettermarks_export.export_event", + "JWT_VERIFICATION_KEYS": "{"794724cc-d956-4009-9eba-46d2aa38eabc":{"format":"pem","desc":"used as public (EC) JWS signature key OF shop service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEivNA6e6LoJKM886bFOCxQ7+3F36P\\n+6QLxAGtJ5GIQDAQsOpaiKXAVaqJ2nAhGCdJbByzmtRn4nR/t0bU4jCGCA==\\n-----END PUBLIC KEY-----\\n"},"bd0bc964-cddf-4705-85ba-8d57be91977c":{"format":"pem","desc":"used as public (EC) JWS signature key OF hierarchy provider","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdlDx9TUME1wIxWNju6ax+RZOlkYO\\njDigVFlep5dk30kCynjDYjBp0EsO4bePiyfK913/swEZ/r/CzUc2B7VlcQ==\\n-----END PUBLIC KEY-----\\n"},"9aac3057-e492-448e-90bf-1404124056b0":{"format":"pem","desc":"used as public (EC) JWS signature key OF ordering service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEldVFYtN5IffED9PrPRHBwFmXHYWK\\ngz9Inj/8651FRWekYyWvkdrvWkNRj5OLOpqtWRXFnRjqdxgeUPPJduajLQ==\\n-----END PUBLIC KEY-----\\n"},"cec04f88-14cb-442c-94c2-86196e33c926":{"format":"pem","desc":"used as public (EC) JWS signature key OF backoffice service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jG0Lko1bL1iy0exdlWt6ugJLN/D\\n6W79hKhYYiMqu43fJci2Gd3huo6WQG9FrnoIzNIy6+pFbTbtVSuljy0EBQ==\\n-----END PUBLIC KEY-----\\n"}}", + "LICENSING_SERVICE_URL": "https://licensing-ci00.bettermarks.com", + "LOG_FORMAT": "json", + "LOG_LEVEL": "INFO", + "SDWH_DB_HOST": "localhost", + "SDWH_DB_NAME": "bmsdwh", + "SDWH_DB_PORT": "5432", + "SDWH_DB_USER": "bmsdwhbiuser", + "SDWH_PORT": "22", + "SDWH_USER": "ionos", + "SEGMENT": "ci00", + }, + "immutable": false, + "kind": "ConfigMap", + "metadata": { + "name": "licensing-config", + "namespace": "licensing", + }, + }, +] +`; + +exports[`Licensing at ci00 should match snapshot for licensing chart 1`] = ` +[ + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "licensing-api", + "namespace": "licensing", + }, + "spec": { + "replicas": 2, + "selector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "strategy": { + "rollingUpdate": { + "maxSurge": 1, + "maxUnavailable": 0, + }, + }, + "template": { + "metadata": { + "labels": { + "app": "licensing-api", + }, + }, + "spec": { + "containers": [ + { + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:latest", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "httpGet": { + "path": "/livez", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + "name": "licensing-api", + "ports": [ + { + "containerPort": 8000, + }, + ], + "readinessProbe": { + "httpGet": { + "path": "/status", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + "resources": { + "limits": { + "memory": "256Mi", + }, + "requests": { + "cpu": 0.25, + "memory": "256Mi", + }, + }, + }, + ], + "initContainers": [], + "nodeSelector": { + "nodetype": "application", + }, + "serviceAccountName": "licensing", + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 20, + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 20, + }, + ], + "topologySpreadConstraints": [ + { + "labelSelector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "matchLabelKeys": [ + "pod-template-hash", + ], + "maxSkew": 1, + "nodeAffinityPolicy": "Honor", + "nodeTaintsPolicy": "Honor", + "topologyKey": "topology.kubernetes.io/zone", + "whenUnsatisfiable": "ScheduleAnyway", + }, + { + "labelSelector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "matchLabelKeys": [ + "pod-template-hash", + ], + "maxSkew": 1, + "nodeAffinityPolicy": "Honor", + "nodeTaintsPolicy": "Honor", + "topologyKey": "kubernetes.io/hostname", + "whenUnsatisfiable": "ScheduleAnyway", + }, + ], + }, + }, + }, + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "licensing-api", + "namespace": "licensing", + }, + "spec": { + "ports": [ + { + "port": 80, + "targetPort": 8000, + }, + ], + "selector": { + "app": "licensing-api", + }, + "type": "ClusterIP", + }, + }, +] +`; + +exports[`Licensing at ci00 should match snapshot for licensing event export cronjob 1`] = ` +[ + { + "apiVersion": "batch/v1", + "kind": "CronJob", + "metadata": { + "name": "licensing-event-export", + "namespace": "licensing", + }, + "spec": { + "concurrencyPolicy": "Forbid", + "jobTemplate": { + "metadata": { + "name": "licensing-event-export", + "namespace": "licensing", + }, + "spec": { + "backoffLimit": 1, + "suspend": false, + "template": { + "spec": { + "containers": [ + { + "command": [ + "python", + "src/services/licensing/scripts/export_events.py", + "--events-per-run=12000", + "--log-format=json", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "event-export", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:latest", + "imagePullPolicy": "IfNotPresent", + "name": "licensing-event-export", + "resources": { + "limits": { + "memory": "128Mi", + }, + "requests": { + "cpu": 0.1, + "memory": "128Mi", + }, + }, + }, + ], + "nodeSelector": { + "nodetype": "application", + }, + "restartPolicy": "Never", + "serviceAccountName": "licensing", + }, + }, + "ttlSecondsAfterFinished": 600, + }, + }, + "schedule": "*/20 * * * *", + "suspend": false, + }, + }, +] +`; + +exports[`Licensing at ci00 should match snapshot for licensing migration job 1`] = ` +[ + { + "apiVersion": "batch/v1", + "kind": "Job", + "metadata": { + "name": "licensing-migration", + "namespace": "licensing", + }, + "spec": { + "backoffLimit": 1, + "template": { + "spec": { + "containers": [ + { + "args": [ + "alembic upgrade head", + ], + "command": [ + "bash", + "-c", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:latest", + "imagePullPolicy": "IfNotPresent", + "name": "licensing-migration", + "resources": { + "limits": { + "memory": "128Mi", + }, + "requests": { + "cpu": 0.05, + "memory": "128Mi", + }, + }, + }, + ], + "initContainers": [ + { + "command": [ + "sh", + "-c", + "until pg_isready --host \${DB_HOST}; do sleep 1; done", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "postgres:14", + "imagePullPolicy": "IfNotPresent", + "name": "wait-for-database-migration", + "resources": { + "limits": { + "memory": "64Mi", + }, + "requests": { + "cpu": 0.1, + "memory": "64Mi", + }, + }, + }, + ], + "nodeSelector": {}, + "restartPolicy": "Never", + "serviceAccountName": "licensing", + }, + }, + "ttlSecondsAfterFinished": 60, + }, + }, +] +`; + +exports[`Licensing at ci00 should match snapshot for service account 1`] = ` +[ + { + "apiVersion": "v1", + "imagePullSecrets": [ + { + "name": "registry-credentials", + }, + ], + "kind": "ServiceAccount", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + "rules": [ + { + "apiGroups": [ + "", + ], + "resources": [ + "pods", + ], + "verbs": [ + "get", + "list", + "watch", + ], + }, + ], + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "licensing", + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "licensing", + }, + ], + }, +] +`; + +exports[`Licensing at ci01 should match chart for licensing secrets 1`] = ` +[ + { + "apiVersion": "external-secrets.io/v1beta1", + "kind": "ExternalSecret", + "metadata": { + "name": "ext-licensing", + "namespace": "licensing", + }, + "spec": { + "data": [ + { + "remoteRef": { + "decodingStrategy": "Base64", + "key": "licensing/ci01/licensing-service-private-key", + "property": "LICENSING_SERVICE_PRIVATE_KEY", + }, + "secretKey": "LICENSING_SERVICE_PRIVATE_KEY", + }, + ], + "dataFrom": [ + { + "extract": { + "key": "stackit/ci01-pg-cluster-licensing/credentials", + }, + }, + { + "extract": { + "key": "licensing/ci01/credentials", + }, + }, + ], + "refreshInterval": "1h", + "secretStoreRef": { + "kind": "ClusterSecretStore", + "name": "stackit-secrets-manager", + }, + "target": { + "name": "licensing", + }, + }, + }, + { + "apiVersion": "external-secrets.io/v1beta1", + "kind": "ExternalSecret", + "metadata": { + "name": "ext-event-export", + "namespace": "licensing", + }, + "spec": { + "data": [ + { + "remoteRef": { + "key": "backend/ci01/credentials", + "property": "BM_ENCRYPTION_PASSWORD", + }, + "secretKey": "BM_ENCRYPTION_PASSWORD", + }, + { + "remoteRef": { + "key": "stackit/ci01/application/readonly-secret", + "property": "MONGODB_URI", + }, + "secretKey": "MONGODB_URI", + }, + ], + "dataFrom": [ + { + "extract": { + "key": "stackit/ci01-pg-cluster-licensing/credentials", + }, + }, + ], + "refreshInterval": "1h", + "secretStoreRef": { + "kind": "ClusterSecretStore", + "name": "stackit-secrets-manager", + }, + "target": { + "name": "event-export", + }, + }, + }, +] +`; + +exports[`Licensing at ci01 should match snapshot for configmap 1`] = ` +[ + { + "apiVersion": "v1", + "data": { + "APM_ENABLED": "true", + "APM_TRANSACTION_SAMPLE_RATE": "0.1", + "APM_URL": "https://apm.bettermarks.com", + "JWT_VERIFICATION_KEYS": "{"794724cc-d956-4009-9eba-46d2aa38eabc":{"format":"pem","desc":"used as public (EC) JWS signature key OF shop service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEivNA6e6LoJKM886bFOCxQ7+3F36P\\n+6QLxAGtJ5GIQDAQsOpaiKXAVaqJ2nAhGCdJbByzmtRn4nR/t0bU4jCGCA==\\n-----END PUBLIC KEY-----\\n"},"bd0bc964-cddf-4705-85ba-8d57be91977c":{"format":"pem","desc":"used as public (EC) JWS signature key OF hierarchy provider","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdlDx9TUME1wIxWNju6ax+RZOlkYO\\njDigVFlep5dk30kCynjDYjBp0EsO4bePiyfK913/swEZ/r/CzUc2B7VlcQ==\\n-----END PUBLIC KEY-----\\n"},"9aac3057-e492-448e-90bf-1404124056b0":{"format":"pem","desc":"used as public (EC) JWS signature key OF ordering service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEldVFYtN5IffED9PrPRHBwFmXHYWK\\ngz9Inj/8651FRWekYyWvkdrvWkNRj5OLOpqtWRXFnRjqdxgeUPPJduajLQ==\\n-----END PUBLIC KEY-----\\n"},"cec04f88-14cb-442c-94c2-86196e33c926":{"format":"pem","desc":"used as public (EC) JWS signature key OF backoffice service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jG0Lko1bL1iy0exdlWt6ugJLN/D\\n6W79hKhYYiMqu43fJci2Gd3huo6WQG9FrnoIzNIy6+pFbTbtVSuljy0EBQ==\\n-----END PUBLIC KEY-----\\n"}}", + "LICENSING_SERVICE_URL": "https://licensing-ci01.bettermarks.com", + "LOG_FORMAT": "json", + "LOG_LEVEL": "INFO", + "SEGMENT": "ci01", + }, + "immutable": false, + "kind": "ConfigMap", + "metadata": { + "name": "licensing-config", + "namespace": "licensing", + }, + }, +] +`; + +exports[`Licensing at ci01 should match snapshot for licensing chart 1`] = ` +[ + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "licensing-api", + "namespace": "licensing", + }, + "spec": { + "replicas": 2, + "selector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "strategy": { + "rollingUpdate": { + "maxSurge": 1, + "maxUnavailable": 0, + }, + }, + "template": { + "metadata": { + "labels": { + "app": "licensing-api", + }, + }, + "spec": { + "containers": [ + { + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:latest", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "httpGet": { + "path": "/livez", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + "name": "licensing-api", + "ports": [ + { + "containerPort": 8000, + }, + ], + "readinessProbe": { + "httpGet": { + "path": "/status", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + "resources": { + "limits": { + "memory": "256Mi", + }, + "requests": { + "cpu": 0.25, + "memory": "256Mi", + }, + }, + }, + ], + "initContainers": [], + "nodeSelector": { + "nodetype": "application", + }, + "serviceAccountName": "licensing", + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 20, + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 20, + }, + ], + "topologySpreadConstraints": [ + { + "labelSelector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "matchLabelKeys": [ + "pod-template-hash", + ], + "maxSkew": 1, + "nodeAffinityPolicy": "Honor", + "nodeTaintsPolicy": "Honor", + "topologyKey": "topology.kubernetes.io/zone", + "whenUnsatisfiable": "ScheduleAnyway", + }, + { + "labelSelector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "matchLabelKeys": [ + "pod-template-hash", + ], + "maxSkew": 1, + "nodeAffinityPolicy": "Honor", + "nodeTaintsPolicy": "Honor", + "topologyKey": "kubernetes.io/hostname", + "whenUnsatisfiable": "ScheduleAnyway", + }, + ], + }, + }, + }, + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "licensing-api", + "namespace": "licensing", + }, + "spec": { + "ports": [ + { + "port": 80, + "targetPort": 8000, + }, + ], + "selector": { + "app": "licensing-api", + }, + "type": "ClusterIP", + }, + }, +] +`; + +exports[`Licensing at ci01 should match snapshot for licensing event export cronjob 1`] = ` +[ + { + "apiVersion": "batch/v1", + "kind": "CronJob", + "metadata": { + "name": "licensing-event-export", + "namespace": "licensing", + }, + "spec": { + "concurrencyPolicy": "Forbid", + "jobTemplate": { + "metadata": { + "name": "licensing-event-export", + "namespace": "licensing", + }, + "spec": { + "backoffLimit": 1, + "suspend": false, + "template": { + "spec": { + "containers": [ + { + "command": [ + "python", + "src/services/licensing/scripts/export_events.py", + "--events-per-run=12000", + "--log-format=json", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "event-export", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:latest", + "imagePullPolicy": "IfNotPresent", + "name": "licensing-event-export", + "resources": { + "limits": { + "memory": "128Mi", + }, + "requests": { + "cpu": 0.1, + "memory": "128Mi", + }, + }, + }, + ], + "nodeSelector": { + "nodetype": "application", + }, + "restartPolicy": "Never", + "serviceAccountName": "licensing", + }, + }, + "ttlSecondsAfterFinished": 600, + }, + }, + "schedule": "*/20 * * * *", + "suspend": false, + }, + }, +] +`; + +exports[`Licensing at ci01 should match snapshot for licensing migration job 1`] = ` +[ + { + "apiVersion": "batch/v1", + "kind": "Job", + "metadata": { + "name": "licensing-migration", + "namespace": "licensing", + }, + "spec": { + "backoffLimit": 1, + "template": { + "spec": { + "containers": [ + { + "args": [ + "alembic upgrade head", + ], + "command": [ + "bash", + "-c", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:latest", + "imagePullPolicy": "IfNotPresent", + "name": "licensing-migration", + "resources": { + "limits": { + "memory": "128Mi", + }, + "requests": { + "cpu": 0.05, + "memory": "128Mi", + }, + }, + }, + ], + "initContainers": [ + { + "command": [ + "sh", + "-c", + "until pg_isready --host \${DB_HOST}; do sleep 1; done", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "postgres:14", + "imagePullPolicy": "IfNotPresent", + "name": "wait-for-database-migration", + "resources": { + "limits": { + "memory": "64Mi", + }, + "requests": { + "cpu": 0.1, + "memory": "64Mi", + }, + }, + }, + ], + "nodeSelector": {}, + "restartPolicy": "Never", + "serviceAccountName": "licensing", + }, + }, + "ttlSecondsAfterFinished": 60, + }, + }, +] +`; + +exports[`Licensing at ci01 should match snapshot for service account 1`] = ` +[ + { + "apiVersion": "v1", + "imagePullSecrets": [ + { + "name": "registry-credentials", + }, + ], + "kind": "ServiceAccount", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + "rules": [ + { + "apiGroups": [ + "", + ], + "resources": [ + "pods", + ], + "verbs": [ + "get", + "list", + "watch", + ], + }, + ], + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "licensing", + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "licensing", + }, + ], + }, +] +`; + +exports[`Licensing at dev00 should match chart for licensing secrets 1`] = ` +[ + { + "apiVersion": "external-secrets.io/v1beta1", + "kind": "ExternalSecret", + "metadata": { + "name": "ext-licensing", + "namespace": "licensing", + }, + "spec": { + "data": [ + { + "remoteRef": { + "decodingStrategy": "Base64", + "key": "licensing/dev00/licensing-service-private-key", + "property": "LICENSING_SERVICE_PRIVATE_KEY", + }, + "secretKey": "LICENSING_SERVICE_PRIVATE_KEY", + }, + ], + "dataFrom": [ + { + "extract": { + "key": "stackit/dev00-pg-cluster-licensing/credentials", + }, + }, + { + "extract": { + "key": "licensing/dev00/credentials", + }, + }, + ], + "refreshInterval": "1h", + "secretStoreRef": { + "kind": "ClusterSecretStore", + "name": "stackit-secrets-manager", + }, + "target": { + "name": "licensing", + }, + }, + }, + { + "apiVersion": "external-secrets.io/v1beta1", + "kind": "ExternalSecret", + "metadata": { + "name": "ext-event-export", + "namespace": "licensing", + }, + "spec": { + "data": [ + { + "remoteRef": { + "key": "backend/dev00/credentials", + "property": "BM_ENCRYPTION_PASSWORD", + }, + "secretKey": "BM_ENCRYPTION_PASSWORD", + }, + { + "remoteRef": { + "key": "stackit/dev00/application/readonly-secret", + "property": "MONGODB_URI", + }, + "secretKey": "MONGODB_URI", + }, + ], + "dataFrom": [ + { + "extract": { + "key": "stackit/dev00-pg-cluster-licensing/credentials", + }, + }, + ], + "refreshInterval": "1h", + "secretStoreRef": { + "kind": "ClusterSecretStore", + "name": "stackit-secrets-manager", + }, + "target": { + "name": "event-export", + }, + }, + }, +] +`; + +exports[`Licensing at dev00 should match snapshot for configmap 1`] = ` +[ + { + "apiVersion": "v1", + "data": { + "APM_ENABLED": "true", + "APM_TRANSACTION_SAMPLE_RATE": "0.1", + "APM_URL": "https://apm.bettermarks.com", + "JWT_VERIFICATION_KEYS": "{"6a8913b1-8e57-436a-9551-0165b5ceaadc":{"format":"pem","desc":"used as public (EC) JWS signature key OF shop service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECK+vuevrAWEJ/pXBlPMfhxlFjT7S\\nXX7f8xxa/6T1xuEBXRlaDI/pNWdHHkeFgoM/QOOX8N3gXI32h/J164lnJw==\\n-----END PUBLIC KEY-----\\n"},"deb57535-a9b6-437c-8ab0-edd24e888d24":{"format":"pem","desc":"used as public (EC) JWS signature key OF hierarchy provider","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUjGuzKKQf098S+FfEJyw81Bt1z0B\\nS5sg2jF0b+tKGRiW4L/6wwLeXxsrCb4192gVxorIarb17o80BTGmMeaNEw==\\n-----END PUBLIC KEY-----\\n"},"9aac3057-e492-448e-90bf-1404124056b0":{"format":"pem","desc":"used as public (EC) JWS signature key OF ordering service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEldVFYtN5IffED9PrPRHBwFmXHYWK\\ngz9Inj/8651FRWekYyWvkdrvWkNRj5OLOpqtWRXFnRjqdxgeUPPJduajLQ==\\n-----END PUBLIC KEY-----\\n"},"cd07ca32-7d99-44c9-823e-e6103942767e":{"format":"pem","desc":"used as public (EC) JWS signature key OF backoffice service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3ETb4eEvUXQB9zvpfe3z0slDZ+0c\\nF2q3Eb1YTfCnaqE7eHPZ/4SKiwv8TojzJr3+/cImjqFkD4Xie0POo9wLfg==\\n-----END PUBLIC KEY-----\\n"}}", + "LICENSING_SERVICE_URL": "https://licensing-dev00.bettermarks.com", + "LOG_FORMAT": "json", + "LOG_LEVEL": "INFO", + "SEGMENT": "dev00", + }, + "immutable": false, + "kind": "ConfigMap", + "metadata": { + "name": "licensing-config", + "namespace": "licensing", + }, + }, +] +`; + +exports[`Licensing at dev00 should match snapshot for licensing chart 1`] = ` +[ + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "licensing-api", + "namespace": "licensing", + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "strategy": { + "rollingUpdate": { + "maxSurge": 1, + "maxUnavailable": 0, + }, + }, + "template": { + "metadata": { + "labels": { + "app": "licensing-api", + }, + }, + "spec": { + "containers": [ + { + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:latest", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "httpGet": { + "path": "/livez", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + "name": "licensing-api", + "ports": [ + { + "containerPort": 8000, + }, + ], + "readinessProbe": { + "httpGet": { + "path": "/status", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + "resources": { + "limits": { + "memory": "128Mi", + }, + "requests": { + "cpu": 0.1, + "memory": "128Mi", + }, + }, + }, + ], + "initContainers": [], + "nodeSelector": { + "nodetype": "application", + }, + "serviceAccountName": "licensing", + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 20, + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 20, + }, + ], + "topologySpreadConstraints": [ + { + "labelSelector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "matchLabelKeys": [ + "pod-template-hash", + ], + "maxSkew": 1, + "nodeAffinityPolicy": "Honor", + "nodeTaintsPolicy": "Honor", + "topologyKey": "topology.kubernetes.io/zone", + "whenUnsatisfiable": "ScheduleAnyway", + }, + { + "labelSelector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "matchLabelKeys": [ + "pod-template-hash", + ], + "maxSkew": 1, + "nodeAffinityPolicy": "Honor", + "nodeTaintsPolicy": "Honor", + "topologyKey": "kubernetes.io/hostname", + "whenUnsatisfiable": "ScheduleAnyway", + }, + ], + }, + }, + }, + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "licensing-api", + "namespace": "licensing", + }, + "spec": { + "ports": [ + { + "port": 80, + "targetPort": 8000, + }, + ], + "selector": { + "app": "licensing-api", + }, + "type": "ClusterIP", + }, + }, +] +`; + +exports[`Licensing at dev00 should match snapshot for licensing event export cronjob 1`] = ` +[ + { + "apiVersion": "batch/v1", + "kind": "CronJob", + "metadata": { + "name": "licensing-event-export", + "namespace": "licensing", + }, + "spec": { + "concurrencyPolicy": "Forbid", + "jobTemplate": { + "metadata": { + "name": "licensing-event-export", + "namespace": "licensing", + }, + "spec": { + "backoffLimit": 1, + "suspend": false, + "template": { + "spec": { + "containers": [ + { + "command": [ + "python", + "src/services/licensing/scripts/export_events.py", + "--events-per-run=12000", + "--log-format=json", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "event-export", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:latest", + "imagePullPolicy": "IfNotPresent", + "name": "licensing-event-export", + "resources": { + "limits": { + "memory": "128Mi", + }, + "requests": { + "cpu": 0.1, + "memory": "128Mi", + }, + }, + }, + ], + "nodeSelector": { + "nodetype": "application", + }, + "restartPolicy": "Never", + "serviceAccountName": "licensing", + }, + }, + "ttlSecondsAfterFinished": 600, + }, + }, + "schedule": "*/20 * * * *", + "suspend": false, + }, + }, +] +`; + +exports[`Licensing at dev00 should match snapshot for licensing migration job 1`] = ` +[ + { + "apiVersion": "batch/v1", + "kind": "Job", + "metadata": { + "name": "licensing-migration", + "namespace": "licensing", + }, + "spec": { + "backoffLimit": 1, + "template": { + "spec": { + "containers": [ + { + "args": [ + "alembic upgrade head", + ], + "command": [ + "bash", + "-c", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:latest", + "imagePullPolicy": "IfNotPresent", + "name": "licensing-migration", + "resources": { + "limits": { + "memory": "64Mi", + }, + "requests": { + "cpu": 0.025, + "memory": "64Mi", + }, + }, + }, + ], + "initContainers": [ + { + "command": [ + "sh", + "-c", + "until pg_isready --host \${DB_HOST}; do sleep 1; done", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "postgres:14", + "imagePullPolicy": "IfNotPresent", + "name": "wait-for-database-migration", + "resources": { + "limits": { + "memory": "64Mi", + }, + "requests": { + "cpu": 0.1, + "memory": "64Mi", + }, + }, + }, + ], + "nodeSelector": {}, + "restartPolicy": "Never", + "serviceAccountName": "licensing", + }, + }, + "ttlSecondsAfterFinished": 60, + }, + }, +] +`; + +exports[`Licensing at dev00 should match snapshot for service account 1`] = ` +[ + { + "apiVersion": "v1", + "imagePullSecrets": [ + { + "name": "registry-credentials", + }, + ], + "kind": "ServiceAccount", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + "rules": [ + { + "apiGroups": [ + "", + ], + "resources": [ + "pods", + ], + "verbs": [ + "get", + "list", + "watch", + ], + }, + ], + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "licensing", + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "licensing", + }, + ], + }, +] +`; + +exports[`Licensing at dev01 should match chart for licensing secrets 1`] = ` +[ + { + "apiVersion": "external-secrets.io/v1beta1", + "kind": "ExternalSecret", + "metadata": { + "name": "ext-licensing", + "namespace": "licensing", + }, + "spec": { + "data": [ + { + "remoteRef": { + "decodingStrategy": "Base64", + "key": "licensing/dev01/licensing-service-private-key", + "property": "LICENSING_SERVICE_PRIVATE_KEY", + }, + "secretKey": "LICENSING_SERVICE_PRIVATE_KEY", + }, + ], + "dataFrom": [ + { + "extract": { + "key": "stackit/dev01-pg-cluster-licensing/credentials", + }, + }, + { + "extract": { + "key": "licensing/dev01/credentials", + }, + }, + ], + "refreshInterval": "1h", + "secretStoreRef": { + "kind": "ClusterSecretStore", + "name": "stackit-secrets-manager", + }, + "target": { + "name": "licensing", + }, + }, + }, + { + "apiVersion": "external-secrets.io/v1beta1", + "kind": "ExternalSecret", + "metadata": { + "name": "ext-event-export", + "namespace": "licensing", + }, + "spec": { + "data": [ + { + "remoteRef": { + "key": "backend/dev01/credentials", + "property": "BM_ENCRYPTION_PASSWORD", + }, + "secretKey": "BM_ENCRYPTION_PASSWORD", + }, + { + "remoteRef": { + "key": "stackit/dev01/application/readonly-secret", + "property": "MONGODB_URI", + }, + "secretKey": "MONGODB_URI", + }, + ], + "dataFrom": [ + { + "extract": { + "key": "stackit/dev01-pg-cluster-licensing/credentials", + }, + }, + ], + "refreshInterval": "1h", + "secretStoreRef": { + "kind": "ClusterSecretStore", + "name": "stackit-secrets-manager", + }, + "target": { + "name": "event-export", + }, + }, + }, +] +`; + +exports[`Licensing at dev01 should match snapshot for configmap 1`] = ` +[ + { + "apiVersion": "v1", + "data": { + "APM_ENABLED": "true", + "APM_TRANSACTION_SAMPLE_RATE": "0.1", + "APM_URL": "https://apm.bettermarks.com", + "JWT_VERIFICATION_KEYS": "{"6a8913b1-8e57-436a-9551-0165b5ceaadc":{"format":"pem","desc":"used as public (EC) JWS signature key OF shop service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECK+vuevrAWEJ/pXBlPMfhxlFjT7S\\nXX7f8xxa/6T1xuEBXRlaDI/pNWdHHkeFgoM/QOOX8N3gXI32h/J164lnJw==\\n-----END PUBLIC KEY-----\\n"},"deb57535-a9b6-437c-8ab0-edd24e888d24":{"format":"pem","desc":"used as public (EC) JWS signature key OF hierarchy provider","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUjGuzKKQf098S+FfEJyw81Bt1z0B\\nS5sg2jF0b+tKGRiW4L/6wwLeXxsrCb4192gVxorIarb17o80BTGmMeaNEw==\\n-----END PUBLIC KEY-----\\n"},"9aac3057-e492-448e-90bf-1404124056b0":{"format":"pem","desc":"used as public (EC) JWS signature key OF ordering service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEldVFYtN5IffED9PrPRHBwFmXHYWK\\ngz9Inj/8651FRWekYyWvkdrvWkNRj5OLOpqtWRXFnRjqdxgeUPPJduajLQ==\\n-----END PUBLIC KEY-----\\n"},"cd07ca32-7d99-44c9-823e-e6103942767e":{"format":"pem","desc":"used as public (EC) JWS signature key OF backoffice service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3ETb4eEvUXQB9zvpfe3z0slDZ+0c\\nF2q3Eb1YTfCnaqE7eHPZ/4SKiwv8TojzJr3+/cImjqFkD4Xie0POo9wLfg==\\n-----END PUBLIC KEY-----\\n"}}", + "LICENSING_SERVICE_URL": "https://licensing-dev01.bettermarks.com", + "LOG_FORMAT": "json", + "LOG_LEVEL": "INFO", + "SEGMENT": "dev01", + }, + "immutable": false, + "kind": "ConfigMap", + "metadata": { + "name": "licensing-config", + "namespace": "licensing", + }, + }, +] +`; + +exports[`Licensing at dev01 should match snapshot for licensing chart 1`] = ` +[ + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "licensing-api", + "namespace": "licensing", + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "strategy": { + "rollingUpdate": { + "maxSurge": 1, + "maxUnavailable": 0, + }, + }, + "template": { + "metadata": { + "labels": { + "app": "licensing-api", + }, + }, + "spec": { + "containers": [ + { + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:latest", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "httpGet": { + "path": "/livez", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + "name": "licensing-api", + "ports": [ + { + "containerPort": 8000, + }, + ], + "readinessProbe": { + "httpGet": { + "path": "/status", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + "resources": { + "limits": { + "memory": "128Mi", + }, + "requests": { + "cpu": 0.1, + "memory": "128Mi", + }, + }, + }, + ], + "initContainers": [], + "nodeSelector": { + "nodetype": "application", + }, + "serviceAccountName": "licensing", + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 20, + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 20, + }, + ], + "topologySpreadConstraints": [ + { + "labelSelector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "matchLabelKeys": [ + "pod-template-hash", + ], + "maxSkew": 1, + "nodeAffinityPolicy": "Honor", + "nodeTaintsPolicy": "Honor", + "topologyKey": "topology.kubernetes.io/zone", + "whenUnsatisfiable": "ScheduleAnyway", + }, + { + "labelSelector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "matchLabelKeys": [ + "pod-template-hash", + ], + "maxSkew": 1, + "nodeAffinityPolicy": "Honor", + "nodeTaintsPolicy": "Honor", + "topologyKey": "kubernetes.io/hostname", + "whenUnsatisfiable": "ScheduleAnyway", + }, + ], + }, + }, + }, + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "licensing-api", + "namespace": "licensing", + }, + "spec": { + "ports": [ + { + "port": 80, + "targetPort": 8000, + }, + ], + "selector": { + "app": "licensing-api", + }, + "type": "ClusterIP", + }, + }, +] +`; + +exports[`Licensing at dev01 should match snapshot for licensing event export cronjob 1`] = ` +[ + { + "apiVersion": "batch/v1", + "kind": "CronJob", + "metadata": { + "name": "licensing-event-export", + "namespace": "licensing", + }, + "spec": { + "concurrencyPolicy": "Forbid", + "jobTemplate": { + "metadata": { + "name": "licensing-event-export", + "namespace": "licensing", + }, + "spec": { + "backoffLimit": 1, + "suspend": false, + "template": { + "spec": { + "containers": [ + { + "command": [ + "python", + "src/services/licensing/scripts/export_events.py", + "--events-per-run=12000", + "--log-format=json", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "event-export", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:latest", + "imagePullPolicy": "IfNotPresent", + "name": "licensing-event-export", + "resources": { + "limits": { + "memory": "128Mi", + }, + "requests": { + "cpu": 0.1, + "memory": "128Mi", + }, + }, + }, + ], + "nodeSelector": { + "nodetype": "application", + }, + "restartPolicy": "Never", + "serviceAccountName": "licensing", + }, + }, + "ttlSecondsAfterFinished": 600, + }, + }, + "schedule": "*/20 * * * *", + "suspend": false, + }, + }, +] +`; + +exports[`Licensing at dev01 should match snapshot for licensing migration job 1`] = ` +[ + { + "apiVersion": "batch/v1", + "kind": "Job", + "metadata": { + "name": "licensing-migration", + "namespace": "licensing", + }, + "spec": { + "backoffLimit": 1, + "template": { + "spec": { + "containers": [ + { + "args": [ + "alembic upgrade head", + ], + "command": [ + "bash", + "-c", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:latest", + "imagePullPolicy": "IfNotPresent", + "name": "licensing-migration", + "resources": { + "limits": { + "memory": "64Mi", + }, + "requests": { + "cpu": 0.025, + "memory": "64Mi", + }, + }, + }, + ], + "initContainers": [ + { + "command": [ + "sh", + "-c", + "until pg_isready --host \${DB_HOST}; do sleep 1; done", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "postgres:14", + "imagePullPolicy": "IfNotPresent", + "name": "wait-for-database-migration", + "resources": { + "limits": { + "memory": "64Mi", + }, + "requests": { + "cpu": 0.1, + "memory": "64Mi", + }, + }, + }, + ], + "nodeSelector": {}, + "restartPolicy": "Never", + "serviceAccountName": "licensing", + }, + }, + "ttlSecondsAfterFinished": 60, + }, + }, +] +`; + +exports[`Licensing at dev01 should match snapshot for service account 1`] = ` +[ + { + "apiVersion": "v1", + "imagePullSecrets": [ + { + "name": "registry-credentials", + }, + ], + "kind": "ServiceAccount", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + "rules": [ + { + "apiGroups": [ + "", + ], + "resources": [ + "pods", + ], + "verbs": [ + "get", + "list", + "watch", + ], + }, + ], + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "licensing", + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "licensing", + }, + ], + }, +] +`; + +exports[`Licensing at pro00 should match chart for licensing secrets 1`] = ` +[ + { + "apiVersion": "external-secrets.io/v1beta1", + "kind": "ExternalSecret", + "metadata": { + "name": "ext-licensing", + "namespace": "licensing", + }, + "spec": { + "data": [ + { + "remoteRef": { + "decodingStrategy": "Base64", + "key": "licensing/pro00/licensing-service-private-key", + "property": "LICENSING_SERVICE_PRIVATE_KEY", + }, + "secretKey": "LICENSING_SERVICE_PRIVATE_KEY", + }, + ], + "dataFrom": [ + { + "extract": { + "key": "stackit/pro00-pg-cluster-licensing/credentials", + }, + }, + { + "extract": { + "key": "licensing/pro00/credentials", + }, + }, + ], + "refreshInterval": "1h", + "secretStoreRef": { + "kind": "ClusterSecretStore", + "name": "stackit-secrets-manager", + }, + "target": { + "name": "licensing", + }, + }, + }, + { + "apiVersion": "external-secrets.io/v1beta1", + "kind": "ExternalSecret", + "metadata": { + "name": "ext-event-export", + "namespace": "licensing", + }, + "spec": { + "data": [ + { + "remoteRef": { + "decodingStrategy": "Base64", + "key": "ionos/pro00-sdwh/rsa-private-key", + "property": "SDWH_HOST_PRIVATE_KEY", + }, + "secretKey": "SDWH_HOST_PRIVATE_KEY", + }, + { + "remoteRef": { + "key": "ionos/pro00-sdwh/reader-password", + "property": "SDWH_POSTGRES_SECRET", + }, + "secretKey": "SDWH_POSTGRES_SECRET", + }, + { + "remoteRef": { + "key": "pro_event_api_key_secret", + "property": "DATA_EVENT_API_KEY", + }, + "secretKey": "DATA_EVENT_API_KEY", + }, + { + "remoteRef": { + "key": "backend/pro00/credentials", + "property": "BM_ENCRYPTION_PASSWORD", + }, + "secretKey": "BM_ENCRYPTION_PASSWORD", + }, + { + "remoteRef": { + "key": "stackit/pro00/application/readonly-secret", + "property": "MONGODB_URI", + }, + "secretKey": "MONGODB_URI", + }, + ], + "dataFrom": [ + { + "extract": { + "key": "stackit/pro00-pg-cluster-licensing/credentials", + }, + }, + { + "extract": { + "key": "ionos/pro00-sdwh/private-ip", + }, + }, + ], + "refreshInterval": "1h", + "secretStoreRef": { + "kind": "ClusterSecretStore", + "name": "stackit-secrets-manager", + }, + "target": { + "name": "event-export", + }, + }, + }, +] +`; + +exports[`Licensing at pro00 should match snapshot for configmap 1`] = ` +[ + { + "apiVersion": "v1", + "data": { + "APM_ENABLED": "true", + "APM_TRANSACTION_SAMPLE_RATE": "0.1", + "APM_URL": "https://apm.bettermarks.com", + "DATA_EVENT_API_URL": "https://data.bettermarks.com/events", + "EVENTS_EXPORT_EXPORT_HOOK": "services.licensing.export.bettermarks_export.modified_event", + "EVENTS_EXPORT_FUNCTION": "services.licensing.export.bettermarks_export.export_event", + "JWT_VERIFICATION_KEYS": "{"4b1cc728-5828-4639-8a27-a860dbd87aba":{"format":"pem","desc":"used as public (EC) JWS signature key OF shop service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUzo1cWp0LxhL6xRHUjX9LylocdWK\\nCuGlz/Y7+1hawKFPcw7ZoeBCVDHUPYh9TGknnNIQHfkPZguwUUWPz2gpCA==\\n-----END PUBLIC KEY-----\\n"},"6a51f17d-7187-4408-a9bb-2c267cf2be78":{"format":"pem","desc":"used as public (EC) JWS signature key OF hierarchy provider","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+TFRZVMMoK3y8ui+hSdLxjtmnwCP\\ntHE8J1dsCduCSfhETqq9SgXKDks8KMkeYUmy2ykmWdyAmKydEwizTD4RDw==\\n-----END PUBLIC KEY-----\\n"},"9aac3057-e492-448e-90bf-1404124056b0":{"format":"pem","desc":"used as public (EC) JWS signature key OF ordering service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEldVFYtN5IffED9PrPRHBwFmXHYWK\\ngz9Inj/8651FRWekYyWvkdrvWkNRj5OLOpqtWRXFnRjqdxgeUPPJduajLQ==\\n-----END PUBLIC KEY-----\\n"},"72afe436-6b79-43a9-ae04-82d6af25f6ff":{"format":"pem","desc":"used as public (EC) JWS signature key OF backoffice service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4rQ1KsDrKZ2n5qyQyFRmGuEY8kI6\\nx/x5t9ZnIyR96Dwr9uyPU9C5wSENDG95dlSgqgTTGDftBcavsP1DjhcydQ==\\n-----END PUBLIC KEY-----"}}", + "LICENSING_SERVICE_URL": "https://licensing.bettermarks.com", + "LOG_FORMAT": "json", + "LOG_LEVEL": "INFO", + "SDWH_DB_HOST": "localhost", + "SDWH_DB_NAME": "bmsdwh", + "SDWH_DB_PORT": "5432", + "SDWH_DB_USER": "bmsdwhbiuser", + "SDWH_PORT": "22", + "SDWH_USER": "ionos", + "SEGMENT": "pro00", + }, + "immutable": false, + "kind": "ConfigMap", + "metadata": { + "name": "licensing-config", + "namespace": "licensing", + }, + }, +] +`; + +exports[`Licensing at pro00 should match snapshot for licensing chart 1`] = ` +[ + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "licensing-api", + "namespace": "licensing", + }, + "spec": { + "replicas": 4, + "selector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "strategy": { + "rollingUpdate": { + "maxSurge": 1, + "maxUnavailable": 0, + }, + }, + "template": { + "metadata": { + "labels": { + "app": "licensing-api", + }, + }, + "spec": { + "containers": [ + { + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:latest", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "httpGet": { + "path": "/livez", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + "name": "licensing-api", + "ports": [ + { + "containerPort": 8000, + }, + ], + "readinessProbe": { + "httpGet": { + "path": "/status", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + "resources": { + "limits": { + "memory": "512Mi", + }, + "requests": { + "cpu": 0.25, + "memory": "512Mi", + }, + }, + }, + ], + "initContainers": [], + "nodeSelector": { + "nodetype": "application", + }, + "serviceAccountName": "licensing", + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 20, + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 20, + }, + ], + "topologySpreadConstraints": [ + { + "labelSelector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "matchLabelKeys": [ + "pod-template-hash", + ], + "maxSkew": 1, + "nodeAffinityPolicy": "Honor", + "nodeTaintsPolicy": "Honor", + "topologyKey": "topology.kubernetes.io/zone", + "whenUnsatisfiable": "ScheduleAnyway", + }, + { + "labelSelector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "matchLabelKeys": [ + "pod-template-hash", + ], + "maxSkew": 1, + "nodeAffinityPolicy": "Honor", + "nodeTaintsPolicy": "Honor", + "topologyKey": "kubernetes.io/hostname", + "whenUnsatisfiable": "ScheduleAnyway", + }, + ], + }, + }, + }, + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "licensing-api", + "namespace": "licensing", + }, + "spec": { + "ports": [ + { + "port": 80, + "targetPort": 8000, + }, + ], + "selector": { + "app": "licensing-api", + }, + "type": "ClusterIP", + }, + }, +] +`; + +exports[`Licensing at pro00 should match snapshot for licensing event export cronjob 1`] = ` +[ + { + "apiVersion": "batch/v1", + "kind": "CronJob", + "metadata": { + "name": "licensing-event-export", + "namespace": "licensing", + }, + "spec": { + "concurrencyPolicy": "Forbid", + "jobTemplate": { + "metadata": { + "name": "licensing-event-export", + "namespace": "licensing", + }, + "spec": { + "backoffLimit": 1, + "suspend": false, + "template": { + "spec": { + "containers": [ + { + "command": [ + "python", + "src/services/licensing/scripts/export_events.py", + "--events-per-run=12000", + "--log-format=json", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "event-export", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:latest", + "imagePullPolicy": "IfNotPresent", + "name": "licensing-event-export", + "resources": { + "limits": { + "memory": "256Mi", + }, + "requests": { + "cpu": 0.3, + "memory": "256Mi", + }, + }, + }, + ], + "nodeSelector": { + "nodetype": "application", + }, + "restartPolicy": "Never", + "serviceAccountName": "licensing", + }, + }, + "ttlSecondsAfterFinished": 600, + }, + }, + "schedule": "*/20 * * * *", + "suspend": false, + }, + }, +] +`; + +exports[`Licensing at pro00 should match snapshot for licensing migration job 1`] = ` +[ + { + "apiVersion": "batch/v1", + "kind": "Job", + "metadata": { + "name": "licensing-migration", + "namespace": "licensing", + }, + "spec": { + "backoffLimit": 1, + "template": { + "spec": { + "containers": [ + { + "args": [ + "alembic upgrade head", + ], + "command": [ + "bash", + "-c", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:latest", + "imagePullPolicy": "IfNotPresent", + "name": "licensing-migration", + "resources": { + "limits": { + "memory": "128Mi", + }, + "requests": { + "cpu": 0.05, + "memory": "128Mi", + }, + }, + }, + ], + "initContainers": [ + { + "command": [ + "sh", + "-c", + "until pg_isready --host \${DB_HOST}; do sleep 1; done", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "postgres:14", + "imagePullPolicy": "IfNotPresent", + "name": "wait-for-database-migration", + "resources": { + "limits": { + "memory": "64Mi", + }, + "requests": { + "cpu": 0.1, + "memory": "64Mi", + }, + }, + }, + ], + "nodeSelector": {}, + "restartPolicy": "Never", + "serviceAccountName": "licensing", + }, + }, + "ttlSecondsAfterFinished": 60, + }, + }, +] +`; + +exports[`Licensing at pro00 should match snapshot for service account 1`] = ` +[ + { + "apiVersion": "v1", + "imagePullSecrets": [ + { + "name": "registry-credentials", + }, + ], + "kind": "ServiceAccount", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + "rules": [ + { + "apiGroups": [ + "", + ], + "resources": [ + "pods", + ], + "verbs": [ + "get", + "list", + "watch", + ], + }, + ], + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "licensing", + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "licensing", + }, + ], + }, +] +`; + +exports[`licensing at loc00 should match chart for licensing secrets 1`] = ` +[ + { + "apiVersion": "v1", + "immutable": false, + "kind": "Secret", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + "stringData": { + "APM_SECRET_TOKEN": "", + "DB_HOST": "licensing-db", + "DB_NAME": "postgres", + "DB_PASSWORD": "postgres", + "DB_PORT": "5432", + "DB_USER": "postgres", + "LICENSING_SERVICE_KID": "f72e2e28-a232-411c-a5ad-34a18480aa10", + "LICENSING_SERVICE_PRIVATE_KEY": "-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgrCkyWdmYFh6plKVx +gypQFWoVJ1LOOBdr+36LhulS85ShRANCAAQ5nWN+SnvwJ4Xt2z9EtJl1BkUjWFY5 +PuM88BLOTlEjn6Win2uqSn5JdFVPsn7r9h+O9HAnrSBWUaNRghpkVwuZ +-----END PRIVATE KEY-----", + "POSTGRES_DB": "postgres", + "POSTGRES_PASSWORD": "postgres", + "POSTGRES_USER": "postgres", + }, + }, + { + "apiVersion": "v1", + "immutable": false, + "kind": "Secret", + "metadata": { + "name": "event-export", + "namespace": "licensing", + }, + "stringData": { + "DATA_EVENT_API_KEY": "", + "DATA_EVENT_API_SECRET": "", + "DB_HOST": "licensing-db", + "DB_NAME": "postgres", + "DB_PASSWORD": "postgres", + "DB_PORT": "5432", + "DB_USER": "postgres", + "MONGODB_URI": "", + "POSTGRES_DB": "postgres", + "POSTGRES_PASSWORD": "postgres", + "POSTGRES_USER": "postgres", + "SDWH_HOST_PRIVATE_KEY": "", + "SDWH_POSTGRES_SECRET": "", + "SDWH_PRIVATE_IP": "127.0.0.1", + }, + }, +] +`; + +exports[`licensing at loc00 should match snapshot for configmap 1`] = ` +[ + { + "apiVersion": "v1", + "data": { + "APM_ENABLED": "false", + "APM_TRANSACTION_SAMPLE_RATE": "0.1", + "APM_URL": "", + "EVENTS_EXPORT_FUNCTION": "services.licensing.export.mock_export.export_event", + "JWT_VERIFICATION_KEYS": "{"3e94b29d-c4fe-4f19-b627-dcb62f112a01":{"format":"pem","desc":"used as public (EC) JWS signature key OF shop service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPRHRuf4kEGKdYllznwF2w4T6K954\\n/ltQbQZmzqDZ6WVhtfGm0ncQyv58E/uIu5UAYl55Nzprhbi+5leVyFsnaQ==\\n-----END PUBLIC KEY-----\\n"},"8a210c1b-1020-4835-a0c5-2c0b31c90095":{"format":"pem","desc":"used as public (EC) JWS signature key OF hierarchy provider","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpZa2khO++tAJJWjWXSWVnZ1wGl9P\\nQajoLhpNGJGWJmFy4+lYyMC9g/R3ZaoAjYXwbOi2tNl4ROYqWsZGEvmgig==\\n-----END PUBLIC KEY-----\\n"},"9aac3057-e492-448e-90bf-1404124056b0":{"format":"pem","desc":"used as public (EC) JWS signature key OF ordering service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEldVFYtN5IffED9PrPRHBwFmXHYWK\\ngz9Inj/8651FRWekYyWvkdrvWkNRj5OLOpqtWRXFnRjqdxgeUPPJduajLQ==\\n-----END PUBLIC KEY-----\\n"},"d31c2005-cd17-4dd3-93fc-0bc07c4318da":{"format":"pem","desc":"used as public (EC) JWS signature key OF backoffice service","key":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzSUdN8X3yf6V4NdhCHsP2mQdcZKA\\n+uJWbcPr8YDjBDK4VOCaYm+WV3ce1yKFgqmXYZZEIdz5XIIPw7/zNdiJLQ==\\n-----END PUBLIC KEY-----\\n"}}", + "LICENSING_SERVICE_URL": "https://licensing.bettermarks.loc", + "LOG_FORMAT": "console", + "LOG_LEVEL": "DEBUG", + "SEGMENT": "loc00", + }, + "immutable": false, + "kind": "ConfigMap", + "metadata": { + "name": "licensing-config", + "namespace": "licensing", + }, + }, +] +`; + +exports[`licensing at loc00 should match snapshot for licensing chart 1`] = ` +[ + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "licensing-api", + "namespace": "licensing", + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "strategy": { + "rollingUpdate": { + "maxSurge": 1, + "maxUnavailable": 0, + }, + }, + "template": { + "metadata": { + "labels": { + "app": "licensing-api", + }, + }, + "spec": { + "containers": [ + { + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "licensing", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "httpGet": { + "path": "/livez", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + "name": "licensing-api", + "ports": [ + { + "containerPort": 8000, + }, + ], + "readinessProbe": { + "httpGet": { + "path": "/status", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + "resources": {}, + }, + ], + "initContainers": [], + "serviceAccountName": "licensing", + }, + }, + }, + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "licensing-api", + "namespace": "licensing", + }, + "spec": { + "ports": [ + { + "port": 80, + "targetPort": 8000, + }, + ], + "selector": { + "app": "licensing-api", + }, + "type": "ClusterIP", + }, + }, +] +`; + +exports[`licensing at loc00 should match snapshot for licensing event export cronjob 1`] = ` +[ + { + "apiVersion": "batch/v1", + "kind": "CronJob", + "metadata": { + "name": "licensing-event-export", + "namespace": "licensing", + }, + "spec": { + "concurrencyPolicy": "Forbid", + "jobTemplate": { + "metadata": { + "name": "licensing-event-export", + "namespace": "licensing", + }, + "spec": { + "backoffLimit": 1, + "suspend": false, + "template": { + "spec": { + "containers": [ + { + "command": [ + "python", + "src/services/licensing/scripts/export_events.py", + "--events-per-run=12000", + "--log-format=console", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "event-export", + }, + }, + ], + "image": "licensing", + "imagePullPolicy": "IfNotPresent", + "name": "licensing-event-export", + "resources": {}, + }, + ], + "restartPolicy": "Never", + "serviceAccountName": "licensing", + }, + }, + "ttlSecondsAfterFinished": 600, + }, + }, + "schedule": "*/20 * * * *", + "suspend": false, + }, + }, +] +`; + +exports[`licensing at loc00 should match snapshot for licensing migration job 1`] = ` +[ + { + "apiVersion": "batch/v1", + "kind": "Job", + "metadata": { + "name": "licensing-migration", + "namespace": "licensing", + }, + "spec": { + "backoffLimit": 1, + "template": { + "spec": { + "containers": [ + { + "args": [ + "alembic upgrade head", + ], + "command": [ + "bash", + "-c", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "licensing", + "imagePullPolicy": "IfNotPresent", + "name": "licensing-migration", + "resources": {}, + }, + ], + "initContainers": [ + { + "command": [ + "sh", + "-c", + "until pg_isready --host \${DB_HOST}; do sleep 1; done", + ], + "envFrom": [ + { + "configMapRef": { + "name": "licensing-config", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "postgres:14", + "imagePullPolicy": "IfNotPresent", + "name": "wait-for-database-migration", + "resources": { + "limits": { + "memory": "64Mi", + }, + "requests": { + "cpu": 0.1, + "memory": "64Mi", + }, + }, + }, + ], + "nodeSelector": {}, + "restartPolicy": "Never", + "serviceAccountName": "licensing", + }, + }, + "ttlSecondsAfterFinished": 60, + }, + }, +] +`; + +exports[`licensing at loc00 should match snapshot for local ingress chart 1`] = ` +[ + { + "apiVersion": "networking.k8s.io/v1", + "kind": "Ingress", + "metadata": { + "name": "licensing-ingress", + "namespace": "licensing", + }, + "spec": { + "ingressClassName": "loc00-nginx", + "rules": [ + { + "host": "licensing.bettermarks.loc", + "http": { + "paths": [ + { + "backend": { + "service": { + "name": "licensing-api", + "port": { + "number": 80, + }, + }, + }, + "path": "/", + "pathType": "Prefix", + }, + ], + }, + }, + ], + }, + }, +] +`; + +exports[`licensing at loc00 should match snapshot for mongodb chart 1`] = ` +[ + { + "apiVersion": "v1", + "immutable": false, + "kind": "ConfigMap", + "metadata": { + "name": "licensing-db-init-db-script", + "namespace": "licensing", + }, + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "labels": { + "app": "licensing-db", + }, + "name": "licensing-db", + "namespace": "licensing", + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "app": "licensing-db", + }, + }, + "template": { + "metadata": { + "labels": { + "app": "licensing-db", + }, + }, + "spec": { + "containers": [ + { + "envFrom": [ + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "postgres:14", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "initialDelaySeconds": 10, + "tcpSocket": { + "port": 5432, + }, + }, + "name": "licensing-db", + "ports": [ + { + "containerPort": 5432, + }, + ], + "readinessProbe": { + "initialDelaySeconds": 10, + "tcpSocket": { + "port": 5432, + }, + }, + "volumeMounts": [ + { + "mountPath": "/docker-entrypoint-initdb.d/", + "name": "licensing-db-init-db-script-volume", + }, + ], + }, + ], + "volumes": [ + { + "configMap": { + "name": "licensing-db-init-db-script", + }, + "name": "licensing-db-init-db-script-volume", + }, + ], + }, + }, + }, + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "licensing-db", + "namespace": "licensing", + }, + "spec": { + "ports": [ + { + "port": 5432, + }, + ], + "selector": { + "app": "licensing-db", + }, + "type": "ClusterIP", + }, + }, +] +`; + +exports[`licensing at loc00 should match snapshot for service account 1`] = ` +[ + { + "apiVersion": "v1", + "imagePullSecrets": [], + "kind": "ServiceAccount", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + "rules": [ + { + "apiGroups": [ + "", + ], + "resources": [ + "pods", + ], + "verbs": [ + "get", + "list", + "watch", + ], + }, + ], + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "name": "licensing", + "namespace": "licensing", + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "licensing", + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "licensing", + }, + ], + }, +] +`; diff --git a/k8s/tests/__snapshots__/licensing-chart.test.ts.snap b/k8s/tests/__snapshots__/licensing-chart.test.ts.snap new file mode 100644 index 0000000..d0b9bcc --- /dev/null +++ b/k8s/tests/__snapshots__/licensing-chart.test.ts.snap @@ -0,0 +1,157 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`licensing-chart should match with snapshot 1`] = ` +[ + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "licensing-api", + "namespace": "dummy-namespace", + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "strategy": { + "rollingUpdate": { + "maxSurge": 1, + "maxUnavailable": 0, + }, + }, + "template": { + "metadata": { + "labels": { + "app": "licensing-api", + }, + }, + "spec": { + "containers": [ + { + "envFrom": [ + { + "configMapRef": { + "name": "licensing-configmap", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "676249682729.dkr.ecr.eu-central-1.amazonaws.com/bm-glu:e6b588df29edbf984d876e195bdaee5230c5ad92", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "httpGet": { + "path": "/livez", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + "name": "licensing-api", + "ports": [ + { + "containerPort": 8000, + }, + ], + "readinessProbe": { + "httpGet": { + "path": "/status", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + "resources": { + "limits": { + "memory": "128Mi", + }, + "requests": { + "cpu": 0.1, + "memory": "128Mi", + }, + }, + }, + ], + "initContainers": [], + "nodeSelector": { + "nodetype": "application", + }, + "serviceAccountName": "dummy-service-account", + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 20, + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 20, + }, + ], + "topologySpreadConstraints": [ + { + "labelSelector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "matchLabelKeys": [ + "pod-template-hash", + ], + "maxSkew": 1, + "nodeAffinityPolicy": "Honor", + "nodeTaintsPolicy": "Honor", + "topologyKey": "topology.kubernetes.io/zone", + "whenUnsatisfiable": "ScheduleAnyway", + }, + { + "labelSelector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "matchLabelKeys": [ + "pod-template-hash", + ], + "maxSkew": 1, + "nodeAffinityPolicy": "Honor", + "nodeTaintsPolicy": "Honor", + "topologyKey": "kubernetes.io/hostname", + "whenUnsatisfiable": "ScheduleAnyway", + }, + ], + }, + }, + }, + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "licensing-api", + "namespace": "dummy-namespace", + }, + "spec": { + "ports": [ + { + "port": 80, + "targetPort": 8000, + }, + ], + "selector": { + "app": "licensing-api", + }, + "type": "ClusterIP", + }, + }, +] +`; diff --git a/k8s/tests/__snapshots__/licensing-local-chart.test.ts.snap b/k8s/tests/__snapshots__/licensing-local-chart.test.ts.snap new file mode 100644 index 0000000..f34802c --- /dev/null +++ b/k8s/tests/__snapshots__/licensing-local-chart.test.ts.snap @@ -0,0 +1,99 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`licensing-local-chart should match with snapshot 1`] = ` +[ + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "name": "licensing-api", + "namespace": "dummy-namespace", + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "app": "licensing-api", + }, + }, + "strategy": { + "rollingUpdate": { + "maxSurge": 1, + "maxUnavailable": 0, + }, + }, + "template": { + "metadata": { + "labels": { + "app": "licensing-api", + }, + }, + "spec": { + "containers": [ + { + "envFrom": [ + { + "configMapRef": { + "name": "licensing-configmap", + }, + }, + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "licensing", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "httpGet": { + "path": "/livez", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + "name": "licensing-api", + "ports": [ + { + "containerPort": 8000, + }, + ], + "readinessProbe": { + "httpGet": { + "path": "/status", + "port": 8000, + }, + "initialDelaySeconds": 10, + "timeoutSeconds": 3, + }, + }, + ], + "initContainers": [], + "serviceAccountName": "dummy-service-account", + }, + }, + }, + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "licensing-api", + "namespace": "dummy-namespace", + }, + "spec": { + "ports": [ + { + "port": 80, + "targetPort": 8000, + }, + ], + "selector": { + "app": "licensing-api", + }, + "type": "ClusterIP", + }, + }, +] +`; diff --git a/k8s/tests/__snapshots__/licensing-service-account.test.ts.snap b/k8s/tests/__snapshots__/licensing-service-account.test.ts.snap new file mode 100644 index 0000000..d4fd5b8 --- /dev/null +++ b/k8s/tests/__snapshots__/licensing-service-account.test.ts.snap @@ -0,0 +1,61 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Licensing-service-account should match with snapshot 1`] = ` +[ + { + "apiVersion": "v1", + "imagePullSecrets": [ + { + "name": "ImagePullSecret", + }, + ], + "kind": "ServiceAccount", + "metadata": { + "name": "service-account", + "namespace": "dummy-namespace", + }, + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "Role", + "metadata": { + "name": "service-account", + "namespace": "dummy-namespace", + }, + "rules": [ + { + "apiGroups": [ + "", + ], + "resources": [ + "pods", + ], + "verbs": [ + "get", + "list", + "watch", + ], + }, + ], + }, + { + "apiVersion": "rbac.authorization.k8s.io/v1", + "kind": "RoleBinding", + "metadata": { + "name": "service-account", + "namespace": "dummy-namespace", + }, + "roleRef": { + "apiGroup": "rbac.authorization.k8s.io", + "kind": "Role", + "name": "service-account", + }, + "subjects": [ + { + "kind": "ServiceAccount", + "name": "service-account", + }, + ], + }, +] +`; diff --git a/k8s/tests/__snapshots__/postgres-chart.test.ts.snap b/k8s/tests/__snapshots__/postgres-chart.test.ts.snap new file mode 100644 index 0000000..1983711 --- /dev/null +++ b/k8s/tests/__snapshots__/postgres-chart.test.ts.snap @@ -0,0 +1,107 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`postgres-chart should match with snapshot 1`] = ` +[ + { + "apiVersion": "v1", + "immutable": false, + "kind": "ConfigMap", + "metadata": { + "name": "licensing-db-init-db-script", + "namespace": "dummy-namespace", + }, + }, + { + "apiVersion": "apps/v1", + "kind": "Deployment", + "metadata": { + "labels": { + "app": "licensing-db", + }, + "name": "licensing-db", + "namespace": "dummy-namespace", + }, + "spec": { + "replicas": 1, + "selector": { + "matchLabels": { + "app": "licensing-db", + }, + }, + "template": { + "metadata": { + "labels": { + "app": "licensing-db", + }, + }, + "spec": { + "containers": [ + { + "envFrom": [ + { + "secretRef": { + "name": "licensing", + }, + }, + ], + "image": "postgres:14", + "imagePullPolicy": "IfNotPresent", + "livenessProbe": { + "initialDelaySeconds": 10, + "tcpSocket": { + "port": 5432, + }, + }, + "name": "licensing-db", + "ports": [ + { + "containerPort": 5432, + }, + ], + "readinessProbe": { + "initialDelaySeconds": 10, + "tcpSocket": { + "port": 5432, + }, + }, + "volumeMounts": [ + { + "mountPath": "/docker-entrypoint-initdb.d/", + "name": "licensing-db-init-db-script-volume", + }, + ], + }, + ], + "volumes": [ + { + "configMap": { + "name": "licensing-db-init-db-script", + }, + "name": "licensing-db-init-db-script-volume", + }, + ], + }, + }, + }, + }, + { + "apiVersion": "v1", + "kind": "Service", + "metadata": { + "name": "licensing-db", + "namespace": "dummy-namespace", + }, + "spec": { + "ports": [ + { + "port": 5432, + }, + ], + "selector": { + "app": "licensing-db", + }, + "type": "ClusterIP", + }, + }, +] +`; diff --git a/k8s/tests/ingress-nginx-chart.test.ts b/k8s/tests/ingress-nginx-chart.test.ts new file mode 100644 index 0000000..63a9724 --- /dev/null +++ b/k8s/tests/ingress-nginx-chart.test.ts @@ -0,0 +1,13 @@ +import { LocalIngressChart } from "../lib/common/local-ingress"; +import { Testing } from "cdk8s"; + +describe("ingress-nginx-chart", () => { + test("with tls", () => { + const app = Testing.app(); + const chart = new LocalIngressChart(app, "test-chart", { + namespace: "dummy-namespace", + }); + const results = Testing.synth(chart); + expect(results).toMatchSnapshot(); + }); +}); diff --git a/k8s/tests/licensing-app.test.ts b/k8s/tests/licensing-app.test.ts new file mode 100644 index 0000000..9bd9ba5 --- /dev/null +++ b/k8s/tests/licensing-app.test.ts @@ -0,0 +1,121 @@ +import { LocalIngressChart } from "../lib/common/local-ingress"; +import { createLicensingApp } from "../lib/licensing/licensing-app"; +import { PostgresChart } from "../lib/postgres/postgres"; +import { Namespace, Segment } from "../lib/types"; +import { Testing } from "cdk8s"; + +describe(`licensing at ${Segment.LOC00}`, () => { + const { + licensingServiceAccount, + licensingConfig, + licensingSecrets, + licensingChart, + licensingMigrationJob, + licensingEventExportCronjob, + pgChart, + localIngressChart, + } = createLicensingApp(Testing.app(), { + imageTag: "latest", + namespace: Namespace.LICENSING, + segment: Segment.LOC00, + }); + + it("should match snapshot for licensing migration job", () => { + expect(Testing.synth(licensingMigrationJob)).toMatchSnapshot(); + }); + + it("should not have image pull secret", () => { + expect(licensingServiceAccount.imagePullSecrets).toHaveLength(0); + }); + it("should match snapshot for service account", () => { + expect(Testing.synth(licensingServiceAccount)).toMatchSnapshot(); + }); + + it("should match snapshot for configmap", () => { + expect(Testing.synth(licensingConfig)).toMatchSnapshot(); + }); + + it("should match snapshot for licensing chart", () => { + expect(Testing.synth(licensingChart)).toMatchSnapshot(); + }); + + it("should match chart for licensing secrets", () => { + expect(Testing.synth(licensingSecrets)).toMatchSnapshot(); + }); + it("should match snapshot for licensing event export cronjob", () => { + expect(Testing.synth(licensingEventExportCronjob)).toMatchSnapshot(); + }); + + it("should create pgChart", () => { + expect(pgChart).toBeDefined(); + }); + it("should match snapshot for mongodb chart", () => { + expect(Testing.synth(pgChart as PostgresChart)).toMatchSnapshot(); + }); + + it("should create local ingress chart", () => { + expect(localIngressChart).toBeInstanceOf(LocalIngressChart); + }); + it("should match snapshot for local ingress chart", () => { + expect( + Testing.synth(localIngressChart as LocalIngressChart), + ).toMatchSnapshot(); + }); +}); + +describe.each([ + Segment.DEV00, + Segment.DEV01, + Segment.CI00, + Segment.CI01, + Segment.PRO00, +])("Licensing at %s", (segment) => { + const { + licensingServiceAccount, + licensingConfig, + licensingSecrets, + licensingChart, + licensingMigrationJob, + licensingEventExportCronjob, + pgChart, + localIngressChart, + } = createLicensingApp(Testing.app(), { + imageTag: "latest", + namespace: Namespace.LICENSING, + segment, + }); + + it("should match snapshot for licensing migration job", () => { + expect(Testing.synth(licensingMigrationJob)).toMatchSnapshot(); + }); + + it("should have image pull secret", () => { + expect(licensingServiceAccount.imagePullSecrets).toHaveLength(1); + }); + it("should match snapshot for service account", () => { + expect(Testing.synth(licensingServiceAccount)).toMatchSnapshot(); + }); + + it("should match snapshot for configmap", () => { + expect(Testing.synth(licensingConfig)).toMatchSnapshot(); + }); + + it("should match snapshot for licensing chart", () => { + expect(Testing.synth(licensingChart)).toMatchSnapshot(); + }); + + it("should match chart for licensing secrets", () => { + expect(Testing.synth(licensingSecrets)).toMatchSnapshot(); + }); + it("should match snapshot for licensing event export cronjob", () => { + expect(Testing.synth(licensingEventExportCronjob)).toMatchSnapshot(); + }); + + it("should not create pgChart", () => { + expect(pgChart).toBeUndefined(); + }); + + it("should not create local ingress chart", () => { + expect(localIngressChart).toBeUndefined(); + }); +}); diff --git a/k8s/tests/licensing-chart.test.ts b/k8s/tests/licensing-chart.test.ts new file mode 100644 index 0000000..fcc2758 --- /dev/null +++ b/k8s/tests/licensing-chart.test.ts @@ -0,0 +1,29 @@ +import { DEPLOYMENT_CONFIG } from "../lib/common/config"; +import { APP_NODE_POOL_LABELS } from "../lib/constants"; +import { LicensingChart } from "../lib/licensing/licensing"; +import { Segment } from "../lib/types"; +import { Testing } from "cdk8s"; + +const segment = Segment.DEV00; +describe("licensing-chart", () => { + beforeEach(() => { + jest.useFakeTimers().setSystemTime(new Date("2008-12-01")); + }); + test("should match with snapshot", () => { + const app = Testing.app(); + const chart = new LicensingChart(app, "test-chart", { + name: "licensing", + namespace: "dummy-namespace", + image: + "676249682729.dkr.ecr.eu-central-1.amazonaws.com/bm-glu:e6b588df29edbf984d876e195bdaee5230c5ad92", + configMap: "licensing-configmap", + serviceAccountName: "dummy-service-account", + nodeSelector: APP_NODE_POOL_LABELS, + segment: segment, + apiResources: DEPLOYMENT_CONFIG[segment].apiResources, + apiReplicas: DEPLOYMENT_CONFIG[segment].apiReplicas, + }); + const results = Testing.synth(chart); + expect(results).toMatchSnapshot(); + }); +}); diff --git a/k8s/tests/licensing-local-chart.test.ts b/k8s/tests/licensing-local-chart.test.ts new file mode 100644 index 0000000..2fbc262 --- /dev/null +++ b/k8s/tests/licensing-local-chart.test.ts @@ -0,0 +1,22 @@ +import { LicensingChart } from "../lib/licensing/licensing"; +import { Segment } from "../lib/types"; +import { Testing } from "cdk8s"; + +describe("licensing-local-chart", () => { + beforeEach(() => { + jest.useFakeTimers().setSystemTime(new Date("2008-12-01")); + }); + test("should match with snapshot", () => { + const app = Testing.app(); + const chart = new LicensingChart(app, "test-chart", { + name: "licensing", + image: "licensing", + namespace: "dummy-namespace", + segment: Segment.LOC00, + configMap: "licensing-configmap", + serviceAccountName: "dummy-service-account", + }); + const results = Testing.synth(chart); + expect(results).toMatchSnapshot(); + }); +}); diff --git a/k8s/tests/licensing-service-account.test.ts b/k8s/tests/licensing-service-account.test.ts new file mode 100644 index 0000000..c6fa65a --- /dev/null +++ b/k8s/tests/licensing-service-account.test.ts @@ -0,0 +1,15 @@ +import { LicensingServiceAccount } from "../lib/common/service-account"; +import { Testing } from "cdk8s"; + +describe("Licensing-service-account", () => { + test("should match with snapshot", () => { + const app = Testing.app(); + const chart = new LicensingServiceAccount(app, "test-chart", { + imagePullSecrets: ["ImagePullSecret"], + namespace: "dummy-namespace", + name: "service-account", + }); + const results = Testing.synth(chart); + expect(results).toMatchSnapshot(); + }); +}); diff --git a/k8s/tests/postgres-chart.test.ts b/k8s/tests/postgres-chart.test.ts new file mode 100644 index 0000000..d95f3cc --- /dev/null +++ b/k8s/tests/postgres-chart.test.ts @@ -0,0 +1,15 @@ +import { PostgresChart } from "../lib/postgres/postgres"; +import { Testing } from "cdk8s"; + +describe("postgres-chart", () => { + test("should match with snapshot", () => { + const app = Testing.app(); + const chart = new PostgresChart(app, "test-chart", { + image: "postgres:14", + name: "licensing-db", + namespace: "dummy-namespace", + }); + const results = Testing.synth(chart); + expect(results).toMatchSnapshot(); + }); +}); diff --git a/k8s/tsconfig.json b/k8s/tsconfig.json index 01d1f1e..000b448 100644 --- a/k8s/tsconfig.json +++ b/k8s/tsconfig.json @@ -1,7 +1,6 @@ { "compilerOptions": { "alwaysStrict": true, - "charset": "utf8", "declaration": true, "experimentalDecorators": true, "inlineSourceMap": true, @@ -20,7 +19,8 @@ "strictNullChecks": true, "strictPropertyInitialization": true, "stripInternal": true, - "target": "ES2017" + "target": "ES2017", + "noEmit": true }, "include": ["**/*.ts"], "exclude": ["node_modules"] diff --git a/pyproject.toml b/pyproject.toml index 4e33f41..505bf3d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,17 +1,66 @@ +[project] +name = "licensing" +requires-python = ">= 3.12" +version = "0.0.1" +authors = [{ name = "bettermarks GmbH", email = "bmdevops@bettermarks.com" }] +description = "Licensing Service." +readme = "README.md" +dependencies = [ + "aiohttp==3.11.11", + "alembic==1.14.0", + "asgi-correlation-id==4.3.4", + "asyncpg==0.30.0", + "click==8.1.8", + "cryptography==42.0.7", + "elastic-apm==6.23.0", + "fastapi==0.115.6", + "fastapi-pagination==0.12.34", + "httptools==0.6.4", + "httpx==0.28.1", + "jsonschema==4.23.0", + "jwcrypto==1.5.6", + "pydantic==2.10.4", + "python-dateutil==2.9.0.post0", + "python-decouple==3.8", + "pyyaml==6.0.2", + "requests==2.32.3", + "SQLAlchemy[asyncio]==2.0.36", + "structlog==24.4.0", + "uvicorn==0.34.0", +] + + +[project.optional-dependencies] +export = ["motor==3.6.0", "paramiko==3.5.0", "sshtunnel==0.4.0"] +tests = [ + "black==25.1.0", + "bump2version==1.0.1", + "commitizen==4.1.0", + "freezegun==1.5.1", + "mock==5.1.0", + "pytest==8.3.4", + "pytest-anything==0.1.4", + "pytest_asyncio==0.25.1", + "pytest-cov==6.0.0", + "pytest-env==1.1.5", + "pytest-mock==3.14.0", + "pytest-watch==4.2.0", +] + [build-system] -requires = ["setuptools ==74.1.2", "wheel"] +requires = ["setuptools ==75.7.0", "wheel"] build-backend = "setuptools.build_meta" [tool.commitizen] name = "cz_conventional_commits" -version = "0.0.0" +version = "0.29.1" tag_format = "$version" version_files = [ - "VERSION", + "VERSION", "setup.py:version", - "src/services/licensing/__init__.py" + "src/services/licensing/__init__.py", ] [tool.black] -line-length = 88 \ No newline at end of file +line-length = 88 diff --git a/requirements-dev.in b/requirements-dev.in deleted file mode 100644 index 44e3d0c..0000000 --- a/requirements-dev.in +++ /dev/null @@ -1,13 +0,0 @@ --r requirements.txt -black==24.3.0 -bump2version==1.0.1 -commitizen==3.29.0 -freezegun==1.5.1 -mock==5.1.0 -pytest==8.3.3 -pytest-anything==0.1.4 -pytest_asyncio==0.24.0 -pytest-cov==5.0.0 -pytest-env==1.1.4 -pytest-mock==3.14.0 -pytest-watch==4.2.0 diff --git a/requirements-dev.txt b/requirements-dev.txt deleted file mode 100644 index 39afe57..0000000 --- a/requirements-dev.txt +++ /dev/null @@ -1,258 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile requirements-dev.in -# -aiohappyeyeballs==2.4.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # aiohttp -aiohttp==3.10.11 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -aiosignal==1.3.1 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # aiohttp -alembic==1.13.2 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -anyio==3.7.1 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # httpx - # starlette -argcomplete==3.1.6 - # via commitizen -asgi-correlation-id==4.3.3 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -async-timeout==4.0.3 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # asyncpg -asyncpg==0.29.0 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -attrs==23.1.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # aiohttp -black==24.3.0 - # via -r requirements-dev.in -bump2version==1.0.1 - # via -r requirements-dev.in -certifi==2023.7.22 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # elastic-apm - # httpcore - # httpx - # requests -cffi==1.16.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # cryptography -charset-normalizer==3.3.1 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # commitizen - # requests -click==8.1.7 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # black - # uvicorn -colorama==0.4.6 - # via - # commitizen - # pytest-watch -commitizen==3.29.0 - # via -r requirements-dev.in -coverage[toml]==7.6.1 - # via pytest-cov -cryptography==41.0.5 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # jwcrypto -decli==0.6.2 - # via commitizen -docopt==0.6.2 - # via pytest-watch -ecs-logging==2.1.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # elastic-apm -elastic-apm==6.23.0 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -fastapi==0.109.1 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -fastapi-pagination==0.12.27 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -freezegun==1.5.1 - # via -r requirements-dev.in -frozenlist==1.4.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # aiohttp - # aiosignal -greenlet==3.0.1 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # sqlalchemy -h11==0.14.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # httpcore - # uvicorn -httpcore==1.0.2 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # httpx -httptools==0.6.1 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -httpx==0.27.2 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -idna==3.4 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # anyio - # httpx - # requests - # yarl -iniconfig==2.0.0 - # via pytest -jinja2==3.1.4 - # via commitizen -jwcrypto==1.5.6 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -mako==1.2.4 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # alembic -markupsafe==2.1.3 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # jinja2 - # mako -mock==5.1.0 - # via -r requirements-dev.in -multidict==6.0.4 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # aiohttp - # yarl -mypy-extensions==1.0.0 - # via black -packaging==24.1 - # via - # black - # commitizen - # pytest -pathspec==0.12.1 - # via black -platformdirs==4.3.2 - # via black -pluggy==1.5.0 - # via pytest -prompt-toolkit==3.0.36 - # via questionary -propcache==0.2.1 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # yarl -pycparser==2.21 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # cffi -pydantic==1.10.18 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # fastapi - # fastapi-pagination -pytest==8.3.3 - # via - # -r requirements-dev.in - # pytest-anything - # pytest-asyncio - # pytest-cov - # pytest-env - # pytest-mock - # pytest-watch -pytest-anything==0.1.4 - # via -r requirements-dev.in -pytest-asyncio==0.24.0 - # via -r requirements-dev.in -pytest-cov==5.0.0 - # via -r requirements-dev.in -pytest-env==1.1.4 - # via -r requirements-dev.in -pytest-mock==3.14.0 - # via -r requirements-dev.in -pytest-watch==4.2.0 - # via -r requirements-dev.in -python-dateutil==2.9.0.post0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # freezegun -python-decouple==3.8 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -pytz==2024.2 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -pyyaml==6.0.2 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # commitizen -questionary==2.0.1 - # via commitizen -requests==2.32.2 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -six==1.16.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # python-dateutil -sniffio==1.3.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # anyio - # httpx -sqlalchemy[asyncio]==2.0.34 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # alembic -starlette==0.35.1 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # asgi-correlation-id - # fastapi -structlog==24.4.0 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -termcolor==2.4.0 - # via commitizen -tomlkit==0.13.2 - # via commitizen -typing-extensions==4.8.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # alembic - # fastapi - # fastapi-pagination - # jwcrypto - # pydantic - # sqlalchemy -urllib3==2.0.7 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # elastic-apm - # requests -uvicorn==0.30.6 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -watchdog==5.0.2 - # via pytest-watch -wcwidth==0.2.13 - # via prompt-toolkit -wrapt==1.14.1 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # elastic-apm -yarl==1.18.3 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # aiohttp diff --git a/requirements-export.in b/requirements-export.in deleted file mode 100644 index 20d2ddd..0000000 --- a/requirements-export.in +++ /dev/null @@ -1,4 +0,0 @@ --r requirements.txt -motor==3.5.1 -paramiko==3.4.0 -sshtunnel==0.4.0 diff --git a/requirements-export.txt b/requirements-export.txt deleted file mode 100644 index 6a231fb..0000000 --- a/requirements-export.txt +++ /dev/null @@ -1,197 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile requirements-export.in -# -aiohappyeyeballs==2.4.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # aiohttp -aiohttp==3.10.11 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -aiosignal==1.3.1 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # aiohttp -alembic==1.13.2 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -anyio==3.7.1 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # httpx - # starlette -asgi-correlation-id==4.3.3 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -async-timeout==4.0.3 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # asyncpg -asyncpg==0.29.0 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -attrs==23.1.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # aiohttp -bcrypt==4.2.0 - # via paramiko -certifi==2023.7.22 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # elastic-apm - # httpcore - # httpx - # requests -cffi==1.16.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # cryptography - # pynacl -charset-normalizer==3.3.1 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # requests -click==8.1.7 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # uvicorn -cryptography==41.0.5 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # jwcrypto - # paramiko -dnspython==2.6.1 - # via pymongo -ecs-logging==2.1.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # elastic-apm -elastic-apm==6.23.0 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -fastapi==0.109.1 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -fastapi-pagination==0.12.27 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -frozenlist==1.4.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # aiohttp - # aiosignal -greenlet==3.0.1 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # sqlalchemy -h11==0.14.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # httpcore - # uvicorn -httpcore==1.0.2 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # httpx -httptools==0.6.1 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -httpx==0.27.2 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -idna==3.4 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # anyio - # httpx - # requests - # yarl -jwcrypto==1.5.6 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -mako==1.2.4 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # alembic -markupsafe==2.1.3 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # mako -motor==3.5.1 - # via -r requirements-export.in -multidict==6.0.4 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # aiohttp - # yarl -paramiko==3.4.0 - # via - # -r requirements-export.in - # sshtunnel -propcache==0.2.1 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # yarl -pycparser==2.21 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # cffi -pydantic==1.10.18 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # fastapi - # fastapi-pagination -pymongo==4.8.0 - # via motor -pynacl==1.5.0 - # via paramiko -python-dateutil==2.9.0.post0 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -python-decouple==3.8 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -pytz==2024.2 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -pyyaml==6.0.2 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -requests==2.32.2 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -six==1.16.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # python-dateutil -sniffio==1.3.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # anyio - # httpx -sqlalchemy[asyncio]==2.0.34 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # alembic -sshtunnel==0.4.0 - # via -r requirements-export.in -starlette==0.35.1 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # asgi-correlation-id - # fastapi -structlog==24.4.0 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -typing-extensions==4.8.0 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # alembic - # fastapi - # fastapi-pagination - # jwcrypto - # pydantic - # sqlalchemy -urllib3==2.0.7 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # elastic-apm - # requests -uvicorn==0.30.6 - # via -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt -wrapt==1.14.1 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # elastic-apm -yarl==1.18.3 - # via - # -r /tmp/renovate/repos/github/bettermarks/opal/requirements.txt - # aiohttp diff --git a/requirements.in b/requirements.in deleted file mode 100644 index cfb8f9f..0000000 --- a/requirements.in +++ /dev/null @@ -1,21 +0,0 @@ -aiohttp==3.10.11 -alembic==1.13.2 -asgi-correlation-id==4.3.3 -asyncpg==0.29.0 -click==8.1.7 -cryptography==41.0.5 -elastic-apm==6.23.0 -fastapi==0.109.1 -fastapi-pagination==0.12.27 -httptools==0.6.1 -httpx==0.27.2 -jwcrypto==1.5.6 -pydantic==1.10.18 -python-dateutil==2.9.0.post0 -python-decouple==3.8 -pytz==2024.2 -pyyaml==6.0.2 -requests==2.32.2 -SQLAlchemy[asyncio]==2.0.34 -structlog==24.4.0 -uvicorn==0.30.6 diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index acf4843..0000000 --- a/requirements.txt +++ /dev/null @@ -1,138 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile requirements.in -# -aiohappyeyeballs==2.4.0 - # via aiohttp -aiohttp==3.10.11 - # via -r requirements.in -aiosignal==1.3.1 - # via aiohttp -alembic==1.13.2 - # via -r requirements.in -anyio==3.7.1 - # via - # httpx - # starlette -asgi-correlation-id==4.3.3 - # via -r requirements.in -async-timeout==4.0.3 - # via asyncpg -asyncpg==0.29.0 - # via -r requirements.in -attrs==23.1.0 - # via aiohttp -certifi==2023.7.22 - # via - # elastic-apm - # httpcore - # httpx - # requests -cffi==1.16.0 - # via cryptography -charset-normalizer==3.3.1 - # via requests -click==8.1.7 - # via - # -r requirements.in - # uvicorn -cryptography==41.0.5 - # via - # -r requirements.in - # jwcrypto -ecs-logging==2.1.0 - # via elastic-apm -elastic-apm==6.23.0 - # via -r requirements.in -fastapi==0.109.1 - # via -r requirements.in -fastapi-pagination==0.12.27 - # via -r requirements.in -frozenlist==1.4.0 - # via - # aiohttp - # aiosignal -greenlet==3.0.1 - # via sqlalchemy -h11==0.14.0 - # via - # httpcore - # uvicorn -httpcore==1.0.2 - # via httpx -httptools==0.6.1 - # via -r requirements.in -httpx==0.27.2 - # via -r requirements.in -idna==3.4 - # via - # anyio - # httpx - # requests - # yarl -jwcrypto==1.5.6 - # via -r requirements.in -mako==1.2.4 - # via alembic -markupsafe==2.1.3 - # via mako -multidict==6.0.4 - # via - # aiohttp - # yarl -propcache==0.2.1 - # via yarl -pycparser==2.21 - # via cffi -pydantic==1.10.18 - # via - # -r requirements.in - # fastapi - # fastapi-pagination -python-dateutil==2.9.0.post0 - # via -r requirements.in -python-decouple==3.8 - # via -r requirements.in -pytz==2024.2 - # via -r requirements.in -pyyaml==6.0.2 - # via -r requirements.in -requests==2.32.2 - # via -r requirements.in -six==1.16.0 - # via python-dateutil -sniffio==1.3.0 - # via - # anyio - # httpx -sqlalchemy[asyncio]==2.0.34 - # via - # -r requirements.in - # alembic - # sqlalchemy -starlette==0.35.1 - # via - # asgi-correlation-id - # fastapi -structlog==24.4.0 - # via -r requirements.in -typing-extensions==4.8.0 - # via - # alembic - # fastapi - # fastapi-pagination - # jwcrypto - # pydantic - # sqlalchemy -urllib3==2.0.7 - # via - # elastic-apm - # requests -uvicorn==0.30.6 - # via -r requirements.in -wrapt==1.14.1 - # via elastic-apm -yarl==1.18.3 - # via aiohttp diff --git a/skaffold.yaml b/skaffold.yaml deleted file mode 100644 index 1b73aae..0000000 --- a/skaffold.yaml +++ /dev/null @@ -1,46 +0,0 @@ -apiVersion: skaffold/v2beta16 -kind: Config -build: - artifacts: - - image: licensing - docker: - dockerfile: k8s/Dockerfile.dev - -profiles: - - name: init - deploy: - kustomize: - paths: - - "k8s" - - name: run-api - deploy: - kubectl: - manifests: - - k8s/dist/licensing.k8s.yaml - portForward: - - resourceType: Service - resourceName: ingress-nginx-controller - port: 443 - localPort: 8444 - namespace: licensing - - name: create-db - deploy: - kubectl: - manifests: - - k8s/dist/postgres.k8s.yaml - portForward: - - resourceType: Service - resourceName: licensing-db - port: 5432 - localPort: 15432 - namespace: licensing - - name: run-migration - deploy: - kubectl: - manifests: - - k8s/dist/migration.k8s.yaml - - name: run-event-export - deploy: - kubectl: - manifests: - - k8s/dist/event-export.k8s.yaml diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..6c1ade8 --- /dev/null +++ b/uv.lock @@ -0,0 +1,1666 @@ +version = 1 +revision = 1 +requires-python = ">=3.12" + +[[package]] +name = "aiohappyeyeballs" +version = "2.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265 }, +] + +[[package]] +name = "aiohttp" +version = "3.11.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohappyeyeballs" }, + { name = "aiosignal" }, + { name = "attrs" }, + { name = "frozenlist" }, + { name = "multidict" }, + { name = "propcache" }, + { name = "yarl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fe/ed/f26db39d29cd3cb2f5a3374304c713fe5ab5a0e4c8ee25a0c45cc6adf844/aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e", size = 7669618 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/cf/4bda538c502f9738d6b95ada11603c05ec260807246e15e869fc3ec5de97/aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886", size = 704666 }, + { url = "https://files.pythonhosted.org/packages/46/7b/87fcef2cad2fad420ca77bef981e815df6904047d0a1bd6aeded1b0d1d66/aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2", size = 464057 }, + { url = "https://files.pythonhosted.org/packages/5a/a6/789e1f17a1b6f4a38939fbc39d29e1d960d5f89f73d0629a939410171bc0/aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c", size = 455996 }, + { url = "https://files.pythonhosted.org/packages/b7/dd/485061fbfef33165ce7320db36e530cd7116ee1098e9c3774d15a732b3fd/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a", size = 1682367 }, + { url = "https://files.pythonhosted.org/packages/e9/d7/9ec5b3ea9ae215c311d88b2093e8da17e67b8856673e4166c994e117ee3e/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231", size = 1736989 }, + { url = "https://files.pythonhosted.org/packages/d6/fb/ea94927f7bfe1d86178c9d3e0a8c54f651a0a655214cce930b3c679b8f64/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e", size = 1793265 }, + { url = "https://files.pythonhosted.org/packages/40/7f/6de218084f9b653026bd7063cd8045123a7ba90c25176465f266976d8c82/aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8", size = 1691841 }, + { url = "https://files.pythonhosted.org/packages/77/e2/992f43d87831cbddb6b09c57ab55499332f60ad6fdbf438ff4419c2925fc/aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8", size = 1619317 }, + { url = "https://files.pythonhosted.org/packages/96/74/879b23cdd816db4133325a201287c95bef4ce669acde37f8f1b8669e1755/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c", size = 1641416 }, + { url = "https://files.pythonhosted.org/packages/30/98/b123f6b15d87c54e58fd7ae3558ff594f898d7f30a90899718f3215ad328/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab", size = 1646514 }, + { url = "https://files.pythonhosted.org/packages/d7/38/257fda3dc99d6978ab943141d5165ec74fd4b4164baa15e9c66fa21da86b/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da", size = 1702095 }, + { url = "https://files.pythonhosted.org/packages/0c/f4/ddab089053f9fb96654df5505c0a69bde093214b3c3454f6bfdb1845f558/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853", size = 1734611 }, + { url = "https://files.pythonhosted.org/packages/c3/d6/f30b2bc520c38c8aa4657ed953186e535ae84abe55c08d0f70acd72ff577/aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e", size = 1694576 }, + { url = "https://files.pythonhosted.org/packages/bc/97/b0a88c3f4c6d0020b34045ee6d954058abc870814f6e310c4c9b74254116/aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600", size = 411363 }, + { url = "https://files.pythonhosted.org/packages/7f/23/cc36d9c398980acaeeb443100f0216f50a7cfe20c67a9fd0a2f1a5a846de/aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d", size = 437666 }, + { url = "https://files.pythonhosted.org/packages/49/d1/d8af164f400bad432b63e1ac857d74a09311a8334b0481f2f64b158b50eb/aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9", size = 697982 }, + { url = "https://files.pythonhosted.org/packages/92/d1/faad3bf9fa4bfd26b95c69fc2e98937d52b1ff44f7e28131855a98d23a17/aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194", size = 460662 }, + { url = "https://files.pythonhosted.org/packages/db/61/0d71cc66d63909dabc4590f74eba71f91873a77ea52424401c2498d47536/aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f", size = 452950 }, + { url = "https://files.pythonhosted.org/packages/07/db/6d04bc7fd92784900704e16b745484ef45b77bd04e25f58f6febaadf7983/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104", size = 1665178 }, + { url = "https://files.pythonhosted.org/packages/54/5c/e95ade9ae29f375411884d9fd98e50535bf9fe316c9feb0f30cd2ac8f508/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff", size = 1717939 }, + { url = "https://files.pythonhosted.org/packages/6f/1c/1e7d5c5daea9e409ed70f7986001b8c9e3a49a50b28404498d30860edab6/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3", size = 1775125 }, + { url = "https://files.pythonhosted.org/packages/5d/66/890987e44f7d2f33a130e37e01a164168e6aff06fce15217b6eaf14df4f6/aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1", size = 1677176 }, + { url = "https://files.pythonhosted.org/packages/8f/dc/e2ba57d7a52df6cdf1072fd5fa9c6301a68e1cd67415f189805d3eeb031d/aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4", size = 1603192 }, + { url = "https://files.pythonhosted.org/packages/6c/9e/8d08a57de79ca3a358da449405555e668f2c8871a7777ecd2f0e3912c272/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d", size = 1618296 }, + { url = "https://files.pythonhosted.org/packages/56/51/89822e3ec72db352c32e7fc1c690370e24e231837d9abd056490f3a49886/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87", size = 1616524 }, + { url = "https://files.pythonhosted.org/packages/2c/fa/e2e6d9398f462ffaa095e84717c1732916a57f1814502929ed67dd7568ef/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2", size = 1685471 }, + { url = "https://files.pythonhosted.org/packages/ae/5f/6bb976e619ca28a052e2c0ca7b0251ccd893f93d7c24a96abea38e332bf6/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12", size = 1715312 }, + { url = "https://files.pythonhosted.org/packages/79/c1/756a7e65aa087c7fac724d6c4c038f2faaa2a42fe56dbc1dd62a33ca7213/aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5", size = 1672783 }, + { url = "https://files.pythonhosted.org/packages/73/ba/a6190ebb02176c7f75e6308da31f5d49f6477b651a3dcfaaaca865a298e2/aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d", size = 410229 }, + { url = "https://files.pythonhosted.org/packages/b8/62/c9fa5bafe03186a0e4699150a7fed9b1e73240996d0d2f0e5f70f3fdf471/aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99", size = 436081 }, +] + +[[package]] +name = "aiosignal" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frozenlist" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/b5/6d55e80f6d8a08ce22b982eafa278d823b541c925f11ee774b0b9c43473d/aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54", size = 19424 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597 }, +] + +[[package]] +name = "alembic" +version = "1.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mako" }, + { name = "sqlalchemy" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/1e/8cb8900ba1b6360431e46fb7a89922916d3a1b017a8908a7c0499cc7e5f6/alembic-1.14.0.tar.gz", hash = "sha256:b00892b53b3642d0b8dbedba234dbf1924b69be83a9a769d5a624b01094e304b", size = 1916172 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/06/8b505aea3d77021b18dcbd8133aa1418f1a1e37e432a465b14c46b2c0eaa/alembic-1.14.0-py3-none-any.whl", hash = "sha256:99bd884ca390466db5e27ffccff1d179ec5c05c965cfefc0607e69f9e411cb25", size = 233482 }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, +] + +[[package]] +name = "anyio" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "sniffio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916 }, +] + +[[package]] +name = "argcomplete" +version = "3.5.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0c/be/6c23d80cb966fb8f83fb1ebfb988351ae6b0554d0c3a613ee4531c026597/argcomplete-3.5.3.tar.gz", hash = "sha256:c12bf50eded8aebb298c7b7da7a5ff3ee24dffd9f5281867dfe1424b58c55392", size = 72999 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/08/2a4db06ec3d203124c967fc89295e85a202e5cbbcdc08fd6a64b65217d1e/argcomplete-3.5.3-py3-none-any.whl", hash = "sha256:2ab2c4a215c59fd6caaff41a869480a23e8f6a5f910b266c1808037f4e375b61", size = 43569 }, +] + +[[package]] +name = "asgi-correlation-id" +version = "4.3.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "starlette" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/ff/a6538245ac1eaa7733ec6740774e9d5add019e2c63caa29e758c16c0afdd/asgi_correlation_id-4.3.4.tar.gz", hash = "sha256:ea6bc310380373cb9f731dc2e8b2b6fb978a76afe33f7a2384f697b8d6cd811d", size = 20075 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/ab/6936e2663c47a926e0659437b9333ad87d1ff49b1375d239026e0a268eba/asgi_correlation_id-4.3.4-py3-none-any.whl", hash = "sha256:36ce69b06c7d96b4acb89c7556a4c4f01a972463d3d49c675026cbbd08e9a0a2", size = 15262 }, +] + +[[package]] +name = "asyncpg" +version = "0.30.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/4c/7c991e080e106d854809030d8584e15b2e996e26f16aee6d757e387bc17d/asyncpg-0.30.0.tar.gz", hash = "sha256:c551e9928ab6707602f44811817f82ba3c446e018bfe1d3abecc8ba5f3eac851", size = 957746 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/64/9d3e887bb7b01535fdbc45fbd5f0a8447539833b97ee69ecdbb7a79d0cb4/asyncpg-0.30.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c902a60b52e506d38d7e80e0dd5399f657220f24635fee368117b8b5fce1142e", size = 673162 }, + { url = "https://files.pythonhosted.org/packages/6e/eb/8b236663f06984f212a087b3e849731f917ab80f84450e943900e8ca4052/asyncpg-0.30.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aca1548e43bbb9f0f627a04666fedaca23db0a31a84136ad1f868cb15deb6e3a", size = 637025 }, + { url = "https://files.pythonhosted.org/packages/cc/57/2dc240bb263d58786cfaa60920779af6e8d32da63ab9ffc09f8312bd7a14/asyncpg-0.30.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c2a2ef565400234a633da0eafdce27e843836256d40705d83ab7ec42074efb3", size = 3496243 }, + { url = "https://files.pythonhosted.org/packages/f4/40/0ae9d061d278b10713ea9021ef6b703ec44698fe32178715a501ac696c6b/asyncpg-0.30.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1292b84ee06ac8a2ad8e51c7475aa309245874b61333d97411aab835c4a2f737", size = 3575059 }, + { url = "https://files.pythonhosted.org/packages/c3/75/d6b895a35a2c6506952247640178e5f768eeb28b2e20299b6a6f1d743ba0/asyncpg-0.30.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0f5712350388d0cd0615caec629ad53c81e506b1abaaf8d14c93f54b35e3595a", size = 3473596 }, + { url = "https://files.pythonhosted.org/packages/c8/e7/3693392d3e168ab0aebb2d361431375bd22ffc7b4a586a0fc060d519fae7/asyncpg-0.30.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:db9891e2d76e6f425746c5d2da01921e9a16b5a71a1c905b13f30e12a257c4af", size = 3641632 }, + { url = "https://files.pythonhosted.org/packages/32/ea/15670cea95745bba3f0352341db55f506a820b21c619ee66b7d12ea7867d/asyncpg-0.30.0-cp312-cp312-win32.whl", hash = "sha256:68d71a1be3d83d0570049cd1654a9bdfe506e794ecc98ad0873304a9f35e411e", size = 560186 }, + { url = "https://files.pythonhosted.org/packages/7e/6b/fe1fad5cee79ca5f5c27aed7bd95baee529c1bf8a387435c8ba4fe53d5c1/asyncpg-0.30.0-cp312-cp312-win_amd64.whl", hash = "sha256:9a0292c6af5c500523949155ec17b7fe01a00ace33b68a476d6b5059f9630305", size = 621064 }, + { url = "https://files.pythonhosted.org/packages/3a/22/e20602e1218dc07692acf70d5b902be820168d6282e69ef0d3cb920dc36f/asyncpg-0.30.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05b185ebb8083c8568ea8a40e896d5f7af4b8554b64d7719c0eaa1eb5a5c3a70", size = 670373 }, + { url = "https://files.pythonhosted.org/packages/3d/b3/0cf269a9d647852a95c06eb00b815d0b95a4eb4b55aa2d6ba680971733b9/asyncpg-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c47806b1a8cbb0a0db896f4cd34d89942effe353a5035c62734ab13b9f938da3", size = 634745 }, + { url = "https://files.pythonhosted.org/packages/8e/6d/a4f31bf358ce8491d2a31bfe0d7bcf25269e80481e49de4d8616c4295a34/asyncpg-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b6fde867a74e8c76c71e2f64f80c64c0f3163e687f1763cfaf21633ec24ec33", size = 3512103 }, + { url = "https://files.pythonhosted.org/packages/96/19/139227a6e67f407b9c386cb594d9628c6c78c9024f26df87c912fabd4368/asyncpg-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46973045b567972128a27d40001124fbc821c87a6cade040cfcd4fa8a30bcdc4", size = 3592471 }, + { url = "https://files.pythonhosted.org/packages/67/e4/ab3ca38f628f53f0fd28d3ff20edff1c975dd1cb22482e0061916b4b9a74/asyncpg-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9110df111cabc2ed81aad2f35394a00cadf4f2e0635603db6ebbd0fc896f46a4", size = 3496253 }, + { url = "https://files.pythonhosted.org/packages/ef/5f/0bf65511d4eeac3a1f41c54034a492515a707c6edbc642174ae79034d3ba/asyncpg-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:04ff0785ae7eed6cc138e73fc67b8e51d54ee7a3ce9b63666ce55a0bf095f7ba", size = 3662720 }, + { url = "https://files.pythonhosted.org/packages/e7/31/1513d5a6412b98052c3ed9158d783b1e09d0910f51fbe0e05f56cc370bc4/asyncpg-0.30.0-cp313-cp313-win32.whl", hash = "sha256:ae374585f51c2b444510cdf3595b97ece4f233fde739aa14b50e0d64e8a7a590", size = 560404 }, + { url = "https://files.pythonhosted.org/packages/c8/a4/cec76b3389c4c5ff66301cd100fe88c318563ec8a520e0b2e792b5b84972/asyncpg-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:f59b430b8e27557c3fb9869222559f7417ced18688375825f8f12302c34e915e", size = 621623 }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, +] + +[[package]] +name = "bcrypt" +version = "4.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/5d/6d7433e0f3cd46ce0b43cd65e1db465ea024dbb8216fb2404e919c2ad77b/bcrypt-4.3.0.tar.gz", hash = "sha256:3a3fd2204178b6d2adcf09cb4f6426ffef54762577a7c9b54c159008cb288c18", size = 25697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/2c/3d44e853d1fe969d229bd58d39ae6902b3d924af0e2b5a60d17d4b809ded/bcrypt-4.3.0-cp313-cp313t-macosx_10_12_universal2.whl", hash = "sha256:f01e060f14b6b57bbb72fc5b4a83ac21c443c9a2ee708e04a10e9192f90a6281", size = 483719 }, + { url = "https://files.pythonhosted.org/packages/a1/e2/58ff6e2a22eca2e2cff5370ae56dba29d70b1ea6fc08ee9115c3ae367795/bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5eeac541cefd0bb887a371ef73c62c3cd78535e4887b310626036a7c0a817bb", size = 272001 }, + { url = "https://files.pythonhosted.org/packages/37/1f/c55ed8dbe994b1d088309e366749633c9eb90d139af3c0a50c102ba68a1a/bcrypt-4.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59e1aa0e2cd871b08ca146ed08445038f42ff75968c7ae50d2fdd7860ade2180", size = 277451 }, + { url = "https://files.pythonhosted.org/packages/d7/1c/794feb2ecf22fe73dcfb697ea7057f632061faceb7dcf0f155f3443b4d79/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:0042b2e342e9ae3d2ed22727c1262f76cc4f345683b5c1715f0250cf4277294f", size = 272792 }, + { url = "https://files.pythonhosted.org/packages/13/b7/0b289506a3f3598c2ae2bdfa0ea66969812ed200264e3f61df77753eee6d/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74a8d21a09f5e025a9a23e7c0fd2c7fe8e7503e4d356c0a2c1486ba010619f09", size = 289752 }, + { url = "https://files.pythonhosted.org/packages/dc/24/d0fb023788afe9e83cc118895a9f6c57e1044e7e1672f045e46733421fe6/bcrypt-4.3.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:0142b2cb84a009f8452c8c5a33ace5e3dfec4159e7735f5afe9a4d50a8ea722d", size = 277762 }, + { url = "https://files.pythonhosted.org/packages/e4/38/cde58089492e55ac4ef6c49fea7027600c84fd23f7520c62118c03b4625e/bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_aarch64.whl", hash = "sha256:12fa6ce40cde3f0b899729dbd7d5e8811cb892d31b6f7d0334a1f37748b789fd", size = 272384 }, + { url = "https://files.pythonhosted.org/packages/de/6a/d5026520843490cfc8135d03012a413e4532a400e471e6188b01b2de853f/bcrypt-4.3.0-cp313-cp313t-manylinux_2_34_x86_64.whl", hash = "sha256:5bd3cca1f2aa5dbcf39e2aa13dd094ea181f48959e1071265de49cc2b82525af", size = 277329 }, + { url = "https://files.pythonhosted.org/packages/b3/a3/4fc5255e60486466c389e28c12579d2829b28a527360e9430b4041df4cf9/bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:335a420cfd63fc5bc27308e929bee231c15c85cc4c496610ffb17923abf7f231", size = 305241 }, + { url = "https://files.pythonhosted.org/packages/c7/15/2b37bc07d6ce27cc94e5b10fd5058900eb8fb11642300e932c8c82e25c4a/bcrypt-4.3.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:0e30e5e67aed0187a1764911af023043b4542e70a7461ad20e837e94d23e1d6c", size = 309617 }, + { url = "https://files.pythonhosted.org/packages/5f/1f/99f65edb09e6c935232ba0430c8c13bb98cb3194b6d636e61d93fe60ac59/bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3b8d62290ebefd49ee0b3ce7500f5dbdcf13b81402c05f6dafab9a1e1b27212f", size = 335751 }, + { url = "https://files.pythonhosted.org/packages/00/1b/b324030c706711c99769988fcb694b3cb23f247ad39a7823a78e361bdbb8/bcrypt-4.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2ef6630e0ec01376f59a006dc72918b1bf436c3b571b80fa1968d775fa02fe7d", size = 355965 }, + { url = "https://files.pythonhosted.org/packages/aa/dd/20372a0579dd915dfc3b1cd4943b3bca431866fcb1dfdfd7518c3caddea6/bcrypt-4.3.0-cp313-cp313t-win32.whl", hash = "sha256:7a4be4cbf241afee43f1c3969b9103a41b40bcb3a3f467ab19f891d9bc4642e4", size = 155316 }, + { url = "https://files.pythonhosted.org/packages/6d/52/45d969fcff6b5577c2bf17098dc36269b4c02197d551371c023130c0f890/bcrypt-4.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c1949bf259a388863ced887c7861da1df681cb2388645766c89fdfd9004c669", size = 147752 }, + { url = "https://files.pythonhosted.org/packages/11/22/5ada0b9af72b60cbc4c9a399fdde4af0feaa609d27eb0adc61607997a3fa/bcrypt-4.3.0-cp38-abi3-macosx_10_12_universal2.whl", hash = "sha256:f81b0ed2639568bf14749112298f9e4e2b28853dab50a8b357e31798686a036d", size = 498019 }, + { url = "https://files.pythonhosted.org/packages/b8/8c/252a1edc598dc1ce57905be173328eda073083826955ee3c97c7ff5ba584/bcrypt-4.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:864f8f19adbe13b7de11ba15d85d4a428c7e2f344bac110f667676a0ff84924b", size = 279174 }, + { url = "https://files.pythonhosted.org/packages/29/5b/4547d5c49b85f0337c13929f2ccbe08b7283069eea3550a457914fc078aa/bcrypt-4.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e36506d001e93bffe59754397572f21bb5dc7c83f54454c990c74a468cd589e", size = 283870 }, + { url = "https://files.pythonhosted.org/packages/be/21/7dbaf3fa1745cb63f776bb046e481fbababd7d344c5324eab47f5ca92dd2/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:842d08d75d9fe9fb94b18b071090220697f9f184d4547179b60734846461ed59", size = 279601 }, + { url = "https://files.pythonhosted.org/packages/6d/64/e042fc8262e971347d9230d9abbe70d68b0a549acd8611c83cebd3eaec67/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7c03296b85cb87db865d91da79bf63d5609284fc0cab9472fdd8367bbd830753", size = 297660 }, + { url = "https://files.pythonhosted.org/packages/50/b8/6294eb84a3fef3b67c69b4470fcdd5326676806bf2519cda79331ab3c3a9/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:62f26585e8b219cdc909b6a0069efc5e4267e25d4a3770a364ac58024f62a761", size = 284083 }, + { url = "https://files.pythonhosted.org/packages/62/e6/baff635a4f2c42e8788fe1b1633911c38551ecca9a749d1052d296329da6/bcrypt-4.3.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:beeefe437218a65322fbd0069eb437e7c98137e08f22c4660ac2dc795c31f8bb", size = 279237 }, + { url = "https://files.pythonhosted.org/packages/39/48/46f623f1b0c7dc2e5de0b8af5e6f5ac4cc26408ac33f3d424e5ad8da4a90/bcrypt-4.3.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:97eea7408db3a5bcce4a55d13245ab3fa566e23b4c67cd227062bb49e26c585d", size = 283737 }, + { url = "https://files.pythonhosted.org/packages/49/8b/70671c3ce9c0fca4a6cc3cc6ccbaa7e948875a2e62cbd146e04a4011899c/bcrypt-4.3.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:191354ebfe305e84f344c5964c7cd5f924a3bfc5d405c75ad07f232b6dffb49f", size = 312741 }, + { url = "https://files.pythonhosted.org/packages/27/fb/910d3a1caa2d249b6040a5caf9f9866c52114d51523ac2fb47578a27faee/bcrypt-4.3.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:41261d64150858eeb5ff43c753c4b216991e0ae16614a308a15d909503617732", size = 316472 }, + { url = "https://files.pythonhosted.org/packages/dc/cf/7cf3a05b66ce466cfb575dbbda39718d45a609daa78500f57fa9f36fa3c0/bcrypt-4.3.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:33752b1ba962ee793fa2b6321404bf20011fe45b9afd2a842139de3011898fef", size = 343606 }, + { url = "https://files.pythonhosted.org/packages/e3/b8/e970ecc6d7e355c0d892b7f733480f4aa8509f99b33e71550242cf0b7e63/bcrypt-4.3.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:50e6e80a4bfd23a25f5c05b90167c19030cf9f87930f7cb2eacb99f45d1c3304", size = 362867 }, + { url = "https://files.pythonhosted.org/packages/a9/97/8d3118efd8354c555a3422d544163f40d9f236be5b96c714086463f11699/bcrypt-4.3.0-cp38-abi3-win32.whl", hash = "sha256:67a561c4d9fb9465ec866177e7aebcad08fe23aaf6fbd692a6fab69088abfc51", size = 160589 }, + { url = "https://files.pythonhosted.org/packages/29/07/416f0b99f7f3997c69815365babbc2e8754181a4b1899d921b3c7d5b6f12/bcrypt-4.3.0-cp38-abi3-win_amd64.whl", hash = "sha256:584027857bc2843772114717a7490a37f68da563b3620f78a849bcb54dc11e62", size = 152794 }, + { url = "https://files.pythonhosted.org/packages/6e/c1/3fa0e9e4e0bfd3fd77eb8b52ec198fd6e1fd7e9402052e43f23483f956dd/bcrypt-4.3.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3efb1157edebfd9128e4e46e2ac1a64e0c1fe46fb023158a407c7892b0f8c3", size = 498969 }, + { url = "https://files.pythonhosted.org/packages/ce/d4/755ce19b6743394787fbd7dff6bf271b27ee9b5912a97242e3caf125885b/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08bacc884fd302b611226c01014eca277d48f0a05187666bca23aac0dad6fe24", size = 279158 }, + { url = "https://files.pythonhosted.org/packages/9b/5d/805ef1a749c965c46b28285dfb5cd272a7ed9fa971f970435a5133250182/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6746e6fec103fcd509b96bacdfdaa2fbde9a553245dbada284435173a6f1aef", size = 284285 }, + { url = "https://files.pythonhosted.org/packages/ab/2b/698580547a4a4988e415721b71eb45e80c879f0fb04a62da131f45987b96/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:afe327968aaf13fc143a56a3360cb27d4ad0345e34da12c7290f1b00b8fe9a8b", size = 279583 }, + { url = "https://files.pythonhosted.org/packages/f2/87/62e1e426418204db520f955ffd06f1efd389feca893dad7095bf35612eec/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d9af79d322e735b1fc33404b5765108ae0ff232d4b54666d46730f8ac1a43676", size = 297896 }, + { url = "https://files.pythonhosted.org/packages/cb/c6/8fedca4c2ada1b6e889c52d2943b2f968d3427e5d65f595620ec4c06fa2f/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f1e3ffa1365e8702dc48c8b360fef8d7afeca482809c5e45e653af82ccd088c1", size = 284492 }, + { url = "https://files.pythonhosted.org/packages/4d/4d/c43332dcaaddb7710a8ff5269fcccba97ed3c85987ddaa808db084267b9a/bcrypt-4.3.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:3004df1b323d10021fda07a813fd33e0fd57bef0e9a480bb143877f6cba996fe", size = 279213 }, + { url = "https://files.pythonhosted.org/packages/dc/7f/1e36379e169a7df3a14a1c160a49b7b918600a6008de43ff20d479e6f4b5/bcrypt-4.3.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:531457e5c839d8caea9b589a1bcfe3756b0547d7814e9ce3d437f17da75c32b0", size = 284162 }, + { url = "https://files.pythonhosted.org/packages/1c/0a/644b2731194b0d7646f3210dc4d80c7fee3ecb3a1f791a6e0ae6bb8684e3/bcrypt-4.3.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:17a854d9a7a476a89dcef6c8bd119ad23e0f82557afbd2c442777a16408e614f", size = 312856 }, + { url = "https://files.pythonhosted.org/packages/dc/62/2a871837c0bb6ab0c9a88bf54de0fc021a6a08832d4ea313ed92a669d437/bcrypt-4.3.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6fb1fd3ab08c0cbc6826a2e0447610c6f09e983a281b919ed721ad32236b8b23", size = 316726 }, + { url = "https://files.pythonhosted.org/packages/0c/a1/9898ea3faac0b156d457fd73a3cb9c2855c6fd063e44b8522925cdd8ce46/bcrypt-4.3.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e965a9c1e9a393b8005031ff52583cedc15b7884fce7deb8b0346388837d6cfe", size = 343664 }, + { url = "https://files.pythonhosted.org/packages/40/f2/71b4ed65ce38982ecdda0ff20c3ad1b15e71949c78b2c053df53629ce940/bcrypt-4.3.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:79e70b8342a33b52b55d93b3a59223a844962bef479f6a0ea318ebbcadf71505", size = 363128 }, + { url = "https://files.pythonhosted.org/packages/11/99/12f6a58eca6dea4be992d6c681b7ec9410a1d9f5cf368c61437e31daa879/bcrypt-4.3.0-cp39-abi3-win32.whl", hash = "sha256:b4d4e57f0a63fd0b358eb765063ff661328f69a04494427265950c71b992a39a", size = 160598 }, + { url = "https://files.pythonhosted.org/packages/a9/cf/45fb5261ece3e6b9817d3d82b2f343a505fd58674a92577923bc500bd1aa/bcrypt-4.3.0-cp39-abi3-win_amd64.whl", hash = "sha256:e53e074b120f2877a35cc6c736b8eb161377caae8925c17688bd46ba56daaa5b", size = 152799 }, +] + +[[package]] +name = "black" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "mypy-extensions" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988 }, + { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985 }, + { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816 }, + { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860 }, + { url = "https://files.pythonhosted.org/packages/98/87/0edf98916640efa5d0696e1abb0a8357b52e69e82322628f25bf14d263d1/black-25.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f", size = 1650673 }, + { url = "https://files.pythonhosted.org/packages/52/e5/f7bf17207cf87fa6e9b676576749c6b6ed0d70f179a3d812c997870291c3/black-25.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3", size = 1453190 }, + { url = "https://files.pythonhosted.org/packages/e3/ee/adda3d46d4a9120772fae6de454c8495603c37c4c3b9c60f25b1ab6401fe/black-25.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171", size = 1782926 }, + { url = "https://files.pythonhosted.org/packages/cc/64/94eb5f45dcb997d2082f097a3944cfc7fe87e071907f677e80788a2d7b7a/black-25.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18", size = 1442613 }, + { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646 }, +] + +[[package]] +name = "bump2version" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/29/2a/688aca6eeebfe8941235be53f4da780c6edee05dbbea5d7abaa3aab6fad2/bump2version-1.0.1.tar.gz", hash = "sha256:762cb2bfad61f4ec8e2bdf452c7c267416f8c70dd9ecb1653fd0bbb01fa936e6", size = 36236 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/e3/fa60c47d7c344533142eb3af0b73234ef8ea3fb2da742ab976b947e717df/bump2version-1.0.1-py2.py3-none-any.whl", hash = "sha256:37f927ea17cde7ae2d7baf832f8e80ce3777624554a653006c9144f8017fe410", size = 22030 }, +] + +[[package]] +name = "certifi" +version = "2025.1.31" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/ab/c9f1e32b7b1bf505bf26f0ef697775960db7932abeb7b516de930ba2705f/certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", size = 167577 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", size = 166393 }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105 }, + { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404 }, + { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423 }, + { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184 }, + { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268 }, + { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601 }, + { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098 }, + { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520 }, + { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852 }, + { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488 }, + { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 }, + { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 }, + { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 }, + { url = "https://files.pythonhosted.org/packages/38/94/ce8e6f63d18049672c76d07d119304e1e2d7c6098f0841b51c666e9f44a0/charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda", size = 195698 }, + { url = "https://files.pythonhosted.org/packages/24/2e/dfdd9770664aae179a96561cc6952ff08f9a8cd09a908f259a9dfa063568/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313", size = 140162 }, + { url = "https://files.pythonhosted.org/packages/24/4e/f646b9093cff8fc86f2d60af2de4dc17c759de9d554f130b140ea4738ca6/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9", size = 150263 }, + { url = "https://files.pythonhosted.org/packages/5e/67/2937f8d548c3ef6e2f9aab0f6e21001056f692d43282b165e7c56023e6dd/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b", size = 142966 }, + { url = "https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11", size = 144992 }, + { url = "https://files.pythonhosted.org/packages/96/2c/d49710a6dbcd3776265f4c923bb73ebe83933dfbaa841c5da850fe0fd20b/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f", size = 147162 }, + { url = "https://files.pythonhosted.org/packages/b4/41/35ff1f9a6bd380303dea55e44c4933b4cc3c4850988927d4082ada230273/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd", size = 140972 }, + { url = "https://files.pythonhosted.org/packages/fb/43/c6a0b685fe6910d08ba971f62cd9c3e862a85770395ba5d9cad4fede33ab/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2", size = 149095 }, + { url = "https://files.pythonhosted.org/packages/4c/ff/a9a504662452e2d2878512115638966e75633519ec11f25fca3d2049a94a/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886", size = 152668 }, + { url = "https://files.pythonhosted.org/packages/6c/71/189996b6d9a4b932564701628af5cee6716733e9165af1d5e1b285c530ed/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601", size = 150073 }, + { url = "https://files.pythonhosted.org/packages/e4/93/946a86ce20790e11312c87c75ba68d5f6ad2208cfb52b2d6a2c32840d922/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd", size = 145732 }, + { url = "https://files.pythonhosted.org/packages/cd/e5/131d2fb1b0dddafc37be4f3a2fa79aa4c037368be9423061dccadfd90091/charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407", size = 95391 }, + { url = "https://files.pythonhosted.org/packages/27/f2/4f9a69cc7712b9b5ad8fdb87039fd89abba997ad5cbe690d1835d40405b0/charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971", size = 102702 }, + { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, +] + +[[package]] +name = "click" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "commitizen" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argcomplete" }, + { name = "charset-normalizer" }, + { name = "colorama" }, + { name = "decli" }, + { name = "jinja2" }, + { name = "packaging" }, + { name = "pyyaml" }, + { name = "questionary" }, + { name = "termcolor" }, + { name = "tomlkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/c5/66f1b977b48501a33f5fd33253aba14786483b08aba987718d272e99e732/commitizen-4.1.0.tar.gz", hash = "sha256:4f2d9400ec411aec1c738d4c63fc7fd5807cd6ddf6be970869e03e68b88ff718", size = 51252 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/f7/7f70adfbf3553ffdbe391eaacde72b21dbc1b4226ae56ca32e8ded1bf70b/commitizen-4.1.0-py3-none-any.whl", hash = "sha256:2e6c5fbd442cab4bcc5a04bc86ef2196ef84bcf611317d6c596e87f5bb4c09f5", size = 72282 }, +] + +[[package]] +name = "coverage" +version = "7.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/19/4f/2251e65033ed2ce1e68f00f91a0294e0f80c80ae8c3ebbe2f12828c4cd53/coverage-7.8.0.tar.gz", hash = "sha256:7a3d62b3b03b4b6fd41a085f3574874cf946cb4604d2b4d3e8dca8cd570ca501", size = 811872 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/12/4792669473297f7973518bec373a955e267deb4339286f882439b8535b39/coverage-7.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bbb5cc845a0292e0c520656d19d7ce40e18d0e19b22cb3e0409135a575bf79fc", size = 211684 }, + { url = "https://files.pythonhosted.org/packages/be/e1/2a4ec273894000ebedd789e8f2fc3813fcaf486074f87fd1c5b2cb1c0a2b/coverage-7.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4dfd9a93db9e78666d178d4f08a5408aa3f2474ad4d0e0378ed5f2ef71640cb6", size = 211935 }, + { url = "https://files.pythonhosted.org/packages/f8/3a/7b14f6e4372786709a361729164125f6b7caf4024ce02e596c4a69bccb89/coverage-7.8.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f017a61399f13aa6d1039f75cd467be388d157cd81f1a119b9d9a68ba6f2830d", size = 245994 }, + { url = "https://files.pythonhosted.org/packages/54/80/039cc7f1f81dcbd01ea796d36d3797e60c106077e31fd1f526b85337d6a1/coverage-7.8.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0915742f4c82208ebf47a2b154a5334155ed9ef9fe6190674b8a46c2fb89cb05", size = 242885 }, + { url = "https://files.pythonhosted.org/packages/10/e0/dc8355f992b6cc2f9dcd5ef6242b62a3f73264893bc09fbb08bfcab18eb4/coverage-7.8.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a40fcf208e021eb14b0fac6bdb045c0e0cab53105f93ba0d03fd934c956143a", size = 245142 }, + { url = "https://files.pythonhosted.org/packages/43/1b/33e313b22cf50f652becb94c6e7dae25d8f02e52e44db37a82de9ac357e8/coverage-7.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a1f406a8e0995d654b2ad87c62caf6befa767885301f3b8f6f73e6f3c31ec3a6", size = 244906 }, + { url = "https://files.pythonhosted.org/packages/05/08/c0a8048e942e7f918764ccc99503e2bccffba1c42568693ce6955860365e/coverage-7.8.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:77af0f6447a582fdc7de5e06fa3757a3ef87769fbb0fdbdeba78c23049140a47", size = 243124 }, + { url = "https://files.pythonhosted.org/packages/5b/62/ea625b30623083c2aad645c9a6288ad9fc83d570f9adb913a2abdba562dd/coverage-7.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f2d32f95922927186c6dbc8bc60df0d186b6edb828d299ab10898ef3f40052fe", size = 244317 }, + { url = "https://files.pythonhosted.org/packages/62/cb/3871f13ee1130a6c8f020e2f71d9ed269e1e2124aa3374d2180ee451cee9/coverage-7.8.0-cp312-cp312-win32.whl", hash = "sha256:769773614e676f9d8e8a0980dd7740f09a6ea386d0f383db6821df07d0f08545", size = 214170 }, + { url = "https://files.pythonhosted.org/packages/88/26/69fe1193ab0bfa1eb7a7c0149a066123611baba029ebb448500abd8143f9/coverage-7.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:e5d2b9be5b0693cf21eb4ce0ec8d211efb43966f6657807f6859aab3814f946b", size = 214969 }, + { url = "https://files.pythonhosted.org/packages/f3/21/87e9b97b568e223f3438d93072479c2f36cc9b3f6b9f7094b9d50232acc0/coverage-7.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5ac46d0c2dd5820ce93943a501ac5f6548ea81594777ca585bf002aa8854cacd", size = 211708 }, + { url = "https://files.pythonhosted.org/packages/75/be/882d08b28a0d19c9c4c2e8a1c6ebe1f79c9c839eb46d4fca3bd3b34562b9/coverage-7.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:771eb7587a0563ca5bb6f622b9ed7f9d07bd08900f7589b4febff05f469bea00", size = 211981 }, + { url = "https://files.pythonhosted.org/packages/7a/1d/ce99612ebd58082fbe3f8c66f6d8d5694976c76a0d474503fa70633ec77f/coverage-7.8.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42421e04069fb2cbcbca5a696c4050b84a43b05392679d4068acbe65449b5c64", size = 245495 }, + { url = "https://files.pythonhosted.org/packages/dc/8d/6115abe97df98db6b2bd76aae395fcc941d039a7acd25f741312ced9a78f/coverage-7.8.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:554fec1199d93ab30adaa751db68acec2b41c5602ac944bb19187cb9a41a8067", size = 242538 }, + { url = "https://files.pythonhosted.org/packages/cb/74/2f8cc196643b15bc096d60e073691dadb3dca48418f08bc78dd6e899383e/coverage-7.8.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aaeb00761f985007b38cf463b1d160a14a22c34eb3f6a39d9ad6fc27cb73008", size = 244561 }, + { url = "https://files.pythonhosted.org/packages/22/70/c10c77cd77970ac965734fe3419f2c98665f6e982744a9bfb0e749d298f4/coverage-7.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:581a40c7b94921fffd6457ffe532259813fc68eb2bdda60fa8cc343414ce3733", size = 244633 }, + { url = "https://files.pythonhosted.org/packages/38/5a/4f7569d946a07c952688debee18c2bb9ab24f88027e3d71fd25dbc2f9dca/coverage-7.8.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f319bae0321bc838e205bf9e5bc28f0a3165f30c203b610f17ab5552cff90323", size = 242712 }, + { url = "https://files.pythonhosted.org/packages/bb/a1/03a43b33f50475a632a91ea8c127f7e35e53786dbe6781c25f19fd5a65f8/coverage-7.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:04bfec25a8ef1c5f41f5e7e5c842f6b615599ca8ba8391ec33a9290d9d2db3a3", size = 244000 }, + { url = "https://files.pythonhosted.org/packages/6a/89/ab6c43b1788a3128e4d1b7b54214548dcad75a621f9d277b14d16a80d8a1/coverage-7.8.0-cp313-cp313-win32.whl", hash = "sha256:dd19608788b50eed889e13a5d71d832edc34fc9dfce606f66e8f9f917eef910d", size = 214195 }, + { url = "https://files.pythonhosted.org/packages/12/12/6bf5f9a8b063d116bac536a7fb594fc35cb04981654cccb4bbfea5dcdfa0/coverage-7.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:a9abbccd778d98e9c7e85038e35e91e67f5b520776781d9a1e2ee9d400869487", size = 214998 }, + { url = "https://files.pythonhosted.org/packages/2a/e6/1e9df74ef7a1c983a9c7443dac8aac37a46f1939ae3499424622e72a6f78/coverage-7.8.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:18c5ae6d061ad5b3e7eef4363fb27a0576012a7447af48be6c75b88494c6cf25", size = 212541 }, + { url = "https://files.pythonhosted.org/packages/04/51/c32174edb7ee49744e2e81c4b1414ac9df3dacfcb5b5f273b7f285ad43f6/coverage-7.8.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:95aa6ae391a22bbbce1b77ddac846c98c5473de0372ba5c463480043a07bff42", size = 212767 }, + { url = "https://files.pythonhosted.org/packages/e9/8f/f454cbdb5212f13f29d4a7983db69169f1937e869a5142bce983ded52162/coverage-7.8.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e013b07ba1c748dacc2a80e69a46286ff145935f260eb8c72df7185bf048f502", size = 256997 }, + { url = "https://files.pythonhosted.org/packages/e6/74/2bf9e78b321216d6ee90a81e5c22f912fc428442c830c4077b4a071db66f/coverage-7.8.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d766a4f0e5aa1ba056ec3496243150698dc0481902e2b8559314368717be82b1", size = 252708 }, + { url = "https://files.pythonhosted.org/packages/92/4d/50d7eb1e9a6062bee6e2f92e78b0998848a972e9afad349b6cdde6fa9e32/coverage-7.8.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad80e6b4a0c3cb6f10f29ae4c60e991f424e6b14219d46f1e7d442b938ee68a4", size = 255046 }, + { url = "https://files.pythonhosted.org/packages/40/9e/71fb4e7402a07c4198ab44fc564d09d7d0ffca46a9fb7b0a7b929e7641bd/coverage-7.8.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b87eb6fc9e1bb8f98892a2458781348fa37e6925f35bb6ceb9d4afd54ba36c73", size = 256139 }, + { url = "https://files.pythonhosted.org/packages/49/1a/78d37f7a42b5beff027e807c2843185961fdae7fe23aad5a4837c93f9d25/coverage-7.8.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d1ba00ae33be84066cfbe7361d4e04dec78445b2b88bdb734d0d1cbab916025a", size = 254307 }, + { url = "https://files.pythonhosted.org/packages/58/e9/8fb8e0ff6bef5e170ee19d59ca694f9001b2ec085dc99b4f65c128bb3f9a/coverage-7.8.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f3c38e4e5ccbdc9198aecc766cedbb134b2d89bf64533973678dfcf07effd883", size = 255116 }, + { url = "https://files.pythonhosted.org/packages/56/b0/d968ecdbe6fe0a863de7169bbe9e8a476868959f3af24981f6a10d2b6924/coverage-7.8.0-cp313-cp313t-win32.whl", hash = "sha256:379fe315e206b14e21db5240f89dc0774bdd3e25c3c58c2c733c99eca96f1ada", size = 214909 }, + { url = "https://files.pythonhosted.org/packages/87/e9/d6b7ef9fecf42dfb418d93544af47c940aa83056c49e6021a564aafbc91f/coverage-7.8.0-cp313-cp313t-win_amd64.whl", hash = "sha256:2e4b6b87bb0c846a9315e3ab4be2d52fac905100565f4b92f02c445c8799e257", size = 216068 }, + { url = "https://files.pythonhosted.org/packages/59/f1/4da7717f0063a222db253e7121bd6a56f6fb1ba439dcc36659088793347c/coverage-7.8.0-py3-none-any.whl", hash = "sha256:dbf364b4c5e7bae9250528167dfe40219b62e2d573c854d74be213e1e52069f7", size = 203435 }, +] + +[[package]] +name = "cryptography" +version = "42.0.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/63/66c03eb51f0d241862083deb3f17ab5fce08cf6b347db7887bcb4d1a194e/cryptography-42.0.7.tar.gz", hash = "sha256:ecbfbc00bf55888edda9868a4cf927205de8499e7fabe6c050322298382953f2", size = 671230 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/b5/57982a4ca3542daeabee2303263a8b9d59968d47a1977a36f6aa9344e32e/cryptography-42.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:a987f840718078212fdf4504d0fd4c6effe34a7e4740378e59d47696e8dfb477", size = 5895975 }, + { url = "https://files.pythonhosted.org/packages/53/f7/25186f6ef7df5dc1883ceee11f20305749a7f49ee4066a21818cbe67514e/cryptography-42.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bd13b5e9b543532453de08bcdc3cc7cebec6f9883e886fd20a92f26940fd3e7a", size = 3112553 }, + { url = "https://files.pythonhosted.org/packages/f3/df/f528d1deadd8699f876775c59784ce111bb8b2b0c258c53b16fcf91cad33/cryptography-42.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a79165431551042cc9d1d90e6145d5d0d3ab0f2d66326c201d9b0e7f5bf43604", size = 3645235 }, + { url = "https://files.pythonhosted.org/packages/c9/26/4668c980f63a04c697bac26559c1a2a3a2d0730dc3d0f88b87ed7abf76ca/cryptography-42.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a47787a5e3649008a1102d3df55424e86606c9bae6fb77ac59afe06d234605f8", size = 3834597 }, + { url = "https://files.pythonhosted.org/packages/64/0c/36f71286fef9987f0e850f9b9a78a41784fe7f66c3b7611530b6bb0ecec4/cryptography-42.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:02c0eee2d7133bdbbc5e24441258d5d2244beb31da5ed19fbb80315f4bbbff55", size = 3629799 }, + { url = "https://files.pythonhosted.org/packages/81/17/0294e576979d7f388855bf64b3cc6d9fc08168cdf6833ff0df3ad0ee6580/cryptography-42.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5e44507bf8d14b36b8389b226665d597bc0f18ea035d75b4e53c7b1ea84583cc", size = 3846789 }, + { url = "https://files.pythonhosted.org/packages/d4/08/57c7815d3bb5edeb95da7845cfbd9604393eee955fe139710014f107dac5/cryptography-42.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:7f8b25fa616d8b846aef64b15c606bb0828dbc35faf90566eb139aa9cff67af2", size = 3751264 }, + { url = "https://files.pythonhosted.org/packages/bf/75/a04c67c659888d03f164f58851a3522c16d3c09ce3de5734e6e34b48ec6d/cryptography-42.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:93a3209f6bb2b33e725ed08ee0991b92976dfdcf4e8b38646540674fc7508e13", size = 3920032 }, + { url = "https://files.pythonhosted.org/packages/55/12/6cdd1914e3b443f10f27c1b249cbdab0134962c3cfce25f1b4ae2d087ebf/cryptography-42.0.7-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e6b8f1881dac458c34778d0a424ae5769de30544fc678eac51c1c8bb2183e9da", size = 3721284 }, + { url = "https://files.pythonhosted.org/packages/fd/eb/b03078f34bfe9c11339773a49c75cb2232471bc7b56b3c353b6a27aed8e8/cryptography-42.0.7-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3de9a45d3b2b7d8088c3fbf1ed4395dfeff79d07842217b38df14ef09ce1d8d7", size = 3916671 }, + { url = "https://files.pythonhosted.org/packages/91/f9/1e703c76db2fcdfb1becba2298edaec2ed48eaac12afacba17ceac3842af/cryptography-42.0.7-cp37-abi3-win32.whl", hash = "sha256:789caea816c6704f63f6241a519bfa347f72fbd67ba28d04636b7c6b7da94b0b", size = 2437370 }, + { url = "https://files.pythonhosted.org/packages/59/03/2d6f5513625ca68cc36776794a1925b75d1d22b7486e87738ef1c9667d94/cryptography-42.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:8cb8ce7c3347fcf9446f201dc30e2d5a3c898d009126010cbd1f443f28b52678", size = 2886367 }, + { url = "https://files.pythonhosted.org/packages/cf/c2/8226676b3a4916a12d6c243b1934894e333ea2e97d0233f3260955ed2673/cryptography-42.0.7-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:a3a5ac8b56fe37f3125e5b72b61dcde43283e5370827f5233893d461b7360cd4", size = 5897064 }, + { url = "https://files.pythonhosted.org/packages/80/91/762c76c55db47cb94e1ba91ec6734a4f1e64466cbef5ef8cd63c5ab4f31c/cryptography-42.0.7-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:779245e13b9a6638df14641d029add5dc17edbef6ec915688f3acb9e720a5858", size = 3645518 }, + { url = "https://files.pythonhosted.org/packages/79/fd/4525835d3e42e2db30169d42215ce74762f447fcbf01ed02f74f59bd74cb/cryptography-42.0.7-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d563795db98b4cd57742a78a288cdbdc9daedac29f2239793071fe114f13785", size = 3835474 }, + { url = "https://files.pythonhosted.org/packages/61/fc/bc9d580e480741c05fc6df6f9774dfe33ae42905361661d5d2616476bb62/cryptography-42.0.7-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:31adb7d06fe4383226c3e963471f6837742889b3c4caa55aac20ad951bc8ffda", size = 3629878 }, + { url = "https://files.pythonhosted.org/packages/7b/4e/fa4896744259ee8602464ed2c7330b736cc4dd3fd92f63cd56828bf36707/cryptography-42.0.7-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:efd0bf5205240182e0f13bcaea41be4fdf5c22c5129fc7ced4a0282ac86998c9", size = 3848455 }, + { url = "https://files.pythonhosted.org/packages/fd/b8/08bdd08847b42a9d6d29604bdf6db0521b9c71f5334f0838e082a68b3684/cryptography-42.0.7-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a9bc127cdc4ecf87a5ea22a2556cab6c7eda2923f84e4f3cc588e8470ce4e42e", size = 3751221 }, + { url = "https://files.pythonhosted.org/packages/f2/0d/5476959d71a4c427cf02f278a8984cb4197e6a41417961defd8f0aba88f5/cryptography-42.0.7-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:3577d029bc3f4827dd5bf8bf7710cac13527b470bbf1820a3f394adb38ed7d5f", size = 3921358 }, + { url = "https://files.pythonhosted.org/packages/45/df/f2f6cc5124fb85ff84615d62b996997b22a1c7c37a5ff3f5e8907a5ffa86/cryptography-42.0.7-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2e47577f9b18723fa294b0ea9a17d5e53a227867a0a4904a1a076d1646d45ca1", size = 3720949 }, + { url = "https://files.pythonhosted.org/packages/0a/8b/2a41805540e49df1ea053f0dfef0340964fe422d61f6e398d16bf6c4013b/cryptography-42.0.7-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1a58839984d9cb34c855197043eaae2c187d930ca6d644612843b4fe8513c886", size = 3919083 }, + { url = "https://files.pythonhosted.org/packages/4f/d9/7a70f15b51ab5ab71f7b5f405f6abef67a7aa49efdcc0c0ade215db7d7b8/cryptography-42.0.7-cp39-abi3-win32.whl", hash = "sha256:e6b79d0adb01aae87e8a44c2b64bc3f3fe59515280e00fb6d57a7267a2583cda", size = 2437712 }, + { url = "https://files.pythonhosted.org/packages/0d/59/17c9070c5c397881900c868a5c4e4a522437e3e1653294925082e5f6cf0b/cryptography-42.0.7-cp39-abi3-win_amd64.whl", hash = "sha256:16268d46086bb8ad5bf0a2b5544d8a9ed87a0e33f5e77dd3c3301e63d941a83b", size = 2883754 }, +] + +[[package]] +name = "decli" +version = "0.6.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/a0/a4658f93ecb589f479037b164dc13c68d108b50bf6594e54c820749f97ac/decli-0.6.2.tar.gz", hash = "sha256:36f71eb55fd0093895efb4f416ec32b7f6e00147dda448e3365cf73ceab42d6f", size = 7424 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/70/3ea48dc9e958d7d66c44c9944809181f1ca79aaef25703c023b5092d34ff/decli-0.6.2-py3-none-any.whl", hash = "sha256:2fc84106ce9a8f523ed501ca543bdb7e416c064917c12a59ebdc7f311a97b7ed", size = 7854 }, +] + +[[package]] +name = "dnspython" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632 }, +] + +[[package]] +name = "docopt" +version = "0.6.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491", size = 25901 } + +[[package]] +name = "ecs-logging" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/40/9d/49b6b8ecd9b42ee61691ceea6b8757391f371f11df87315bf64240c04d2b/ecs_logging-2.2.0.tar.gz", hash = "sha256:1dc9e216f614129db0e6a2f9f926da4e4cf8edf8de16d1045a20aa8e950291d3", size = 7769 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/b4/cdc7961ef5979080766c806b6da014352cbbc4ef6194785e6886988bf48e/ecs_logging-2.2.0-py3-none-any.whl", hash = "sha256:f6e22d267770b06f797076f49b5fcc9d97108b22f452f5f9ed4b5367b1e61b5b", size = 10443 }, +] + +[[package]] +name = "elastic-apm" +version = "6.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "ecs-logging" }, + { name = "urllib3" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/63/88f06047f9f0bcbe23d5d3662aed9a66147a2e2200d2d4846de2f83f269d/elastic-apm-6.23.0.tar.gz", hash = "sha256:1aeef4562486bd9ad611bba15f9eca5aeede6a737777541cb68c47c6cf5df7d4", size = 168893 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ad/e3/0e77601be56cff184d9cf68020c41576cb248ec32babb12374d5b054f8a4/elastic_apm-6.23.0-py2.py3-none-any.whl", hash = "sha256:5a1a17580560e70fba40b0a2e7682348422de5a9d2d13511efd05646eb4c62ae", size = 351445 }, +] + +[[package]] +name = "fastapi" +version = "0.115.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/93/72/d83b98cd106541e8f5e5bfab8ef2974ab45a62e8a6c5b5e6940f26d2ed4b/fastapi-0.115.6.tar.gz", hash = "sha256:9ec46f7addc14ea472958a96aae5b5de65f39721a46aaf5705c480d9a8b76654", size = 301336 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/b3/7e4df40e585df024fac2f80d1a2d579c854ac37109675db2b0cc22c0bb9e/fastapi-0.115.6-py3-none-any.whl", hash = "sha256:e9240b29e36fa8f4bb7290316988e90c381e5092e0cbe84e7818cc3713bcf305", size = 94843 }, +] + +[[package]] +name = "fastapi-pagination" +version = "0.12.34" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/83/4d/6e695098ce33b3394cf26b335ca4ec6407f9421cfdf9ad6a38775580db21/fastapi_pagination-0.12.34.tar.gz", hash = "sha256:05ee8c0bc572072160f7f30900bfd87869e1880c87bc5797922fec2e49e65f11", size = 26901 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/f3/a0a1e7efd88dba07743665d1f6f88008c9a1e174458581ecaa53b8699a7c/fastapi_pagination-0.12.34-py3-none-any.whl", hash = "sha256:089d1078aae1784395b4dbd923d0c8246641ddcc291c5ec6d92a30edb92ecbdd", size = 43308 }, +] + +[[package]] +name = "freezegun" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2c/ef/722b8d71ddf4d48f25f6d78aa2533d505bf3eec000a7cacb8ccc8de61f2f/freezegun-1.5.1.tar.gz", hash = "sha256:b29dedfcda6d5e8e083ce71b2b542753ad48cfec44037b3fc79702e2980a89e9", size = 33697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/0b/0d7fee5919bccc1fdc1c2a7528b98f65c6f69b223a3fd8f809918c142c36/freezegun-1.5.1-py3-none-any.whl", hash = "sha256:bf111d7138a8abe55ab48a71755673dbaa4ab87f4cff5634a4442dfec34c15f1", size = 17569 }, +] + +[[package]] +name = "frozenlist" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8f/ed/0f4cec13a93c02c47ec32d81d11c0c1efbadf4a471e3f3ce7cad366cbbd3/frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817", size = 39930 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/73/fa6d1a96ab7fd6e6d1c3500700963eab46813847f01ef0ccbaa726181dd5/frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21", size = 94026 }, + { url = "https://files.pythonhosted.org/packages/ab/04/ea8bf62c8868b8eada363f20ff1b647cf2e93377a7b284d36062d21d81d1/frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d", size = 54150 }, + { url = "https://files.pythonhosted.org/packages/d0/9a/8e479b482a6f2070b26bda572c5e6889bb3ba48977e81beea35b5ae13ece/frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e", size = 51927 }, + { url = "https://files.pythonhosted.org/packages/e3/12/2aad87deb08a4e7ccfb33600871bbe8f0e08cb6d8224371387f3303654d7/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a", size = 282647 }, + { url = "https://files.pythonhosted.org/packages/77/f2/07f06b05d8a427ea0060a9cef6e63405ea9e0d761846b95ef3fb3be57111/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a", size = 289052 }, + { url = "https://files.pythonhosted.org/packages/bd/9f/8bf45a2f1cd4aa401acd271b077989c9267ae8463e7c8b1eb0d3f561b65e/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee", size = 291719 }, + { url = "https://files.pythonhosted.org/packages/41/d1/1f20fd05a6c42d3868709b7604c9f15538a29e4f734c694c6bcfc3d3b935/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6", size = 267433 }, + { url = "https://files.pythonhosted.org/packages/af/f2/64b73a9bb86f5a89fb55450e97cd5c1f84a862d4ff90d9fd1a73ab0f64a5/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e", size = 283591 }, + { url = "https://files.pythonhosted.org/packages/29/e2/ffbb1fae55a791fd6c2938dd9ea779509c977435ba3940b9f2e8dc9d5316/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9", size = 273249 }, + { url = "https://files.pythonhosted.org/packages/2e/6e/008136a30798bb63618a114b9321b5971172a5abddff44a100c7edc5ad4f/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039", size = 271075 }, + { url = "https://files.pythonhosted.org/packages/ae/f0/4e71e54a026b06724cec9b6c54f0b13a4e9e298cc8db0f82ec70e151f5ce/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784", size = 285398 }, + { url = "https://files.pythonhosted.org/packages/4d/36/70ec246851478b1c0b59f11ef8ade9c482ff447c1363c2bd5fad45098b12/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631", size = 294445 }, + { url = "https://files.pythonhosted.org/packages/37/e0/47f87544055b3349b633a03c4d94b405956cf2437f4ab46d0928b74b7526/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f", size = 280569 }, + { url = "https://files.pythonhosted.org/packages/f9/7c/490133c160fb6b84ed374c266f42800e33b50c3bbab1652764e6e1fc498a/frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8", size = 44721 }, + { url = "https://files.pythonhosted.org/packages/b1/56/4e45136ffc6bdbfa68c29ca56ef53783ef4c2fd395f7cbf99a2624aa9aaa/frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f", size = 51329 }, + { url = "https://files.pythonhosted.org/packages/da/3b/915f0bca8a7ea04483622e84a9bd90033bab54bdf485479556c74fd5eaf5/frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953", size = 91538 }, + { url = "https://files.pythonhosted.org/packages/c7/d1/a7c98aad7e44afe5306a2b068434a5830f1470675f0e715abb86eb15f15b/frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0", size = 52849 }, + { url = "https://files.pythonhosted.org/packages/3a/c8/76f23bf9ab15d5f760eb48701909645f686f9c64fbb8982674c241fbef14/frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2", size = 50583 }, + { url = "https://files.pythonhosted.org/packages/1f/22/462a3dd093d11df623179d7754a3b3269de3b42de2808cddef50ee0f4f48/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f", size = 265636 }, + { url = "https://files.pythonhosted.org/packages/80/cf/e075e407fc2ae7328155a1cd7e22f932773c8073c1fc78016607d19cc3e5/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608", size = 270214 }, + { url = "https://files.pythonhosted.org/packages/a1/58/0642d061d5de779f39c50cbb00df49682832923f3d2ebfb0fedf02d05f7f/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b", size = 273905 }, + { url = "https://files.pythonhosted.org/packages/ab/66/3fe0f5f8f2add5b4ab7aa4e199f767fd3b55da26e3ca4ce2cc36698e50c4/frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840", size = 250542 }, + { url = "https://files.pythonhosted.org/packages/f6/b8/260791bde9198c87a465224e0e2bb62c4e716f5d198fc3a1dacc4895dbd1/frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439", size = 267026 }, + { url = "https://files.pythonhosted.org/packages/2e/a4/3d24f88c527f08f8d44ade24eaee83b2627793fa62fa07cbb7ff7a2f7d42/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de", size = 257690 }, + { url = "https://files.pythonhosted.org/packages/de/9a/d311d660420b2beeff3459b6626f2ab4fb236d07afbdac034a4371fe696e/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641", size = 253893 }, + { url = "https://files.pythonhosted.org/packages/c6/23/e491aadc25b56eabd0f18c53bb19f3cdc6de30b2129ee0bc39cd387cd560/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e", size = 267006 }, + { url = "https://files.pythonhosted.org/packages/08/c4/ab918ce636a35fb974d13d666dcbe03969592aeca6c3ab3835acff01f79c/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9", size = 276157 }, + { url = "https://files.pythonhosted.org/packages/c0/29/3b7a0bbbbe5a34833ba26f686aabfe982924adbdcafdc294a7a129c31688/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03", size = 264642 }, + { url = "https://files.pythonhosted.org/packages/ab/42/0595b3dbffc2e82d7fe658c12d5a5bafcd7516c6bf2d1d1feb5387caa9c1/frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c", size = 44914 }, + { url = "https://files.pythonhosted.org/packages/17/c4/b7db1206a3fea44bf3b838ca61deb6f74424a8a5db1dd53ecb21da669be6/frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28", size = 51167 }, + { url = "https://files.pythonhosted.org/packages/c6/c8/a5be5b7550c10858fcf9b0ea054baccab474da77d37f1e828ce043a3a5d4/frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3", size = 11901 }, +] + +[[package]] +name = "greenlet" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/ff/df5fede753cc10f6a5be0931204ea30c35fa2f2ea7a35b25bdaf4fe40e46/greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467", size = 186022 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/ec/bad1ac26764d26aa1353216fcbfa4670050f66d445448aafa227f8b16e80/greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d", size = 274260 }, + { url = "https://files.pythonhosted.org/packages/66/d4/c8c04958870f482459ab5956c2942c4ec35cac7fe245527f1039837c17a9/greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79", size = 649064 }, + { url = "https://files.pythonhosted.org/packages/51/41/467b12a8c7c1303d20abcca145db2be4e6cd50a951fa30af48b6ec607581/greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa", size = 663420 }, + { url = "https://files.pythonhosted.org/packages/27/8f/2a93cd9b1e7107d5c7b3b7816eeadcac2ebcaf6d6513df9abaf0334777f6/greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441", size = 658035 }, + { url = "https://files.pythonhosted.org/packages/57/5c/7c6f50cb12be092e1dccb2599be5a942c3416dbcfb76efcf54b3f8be4d8d/greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36", size = 660105 }, + { url = "https://files.pythonhosted.org/packages/f1/66/033e58a50fd9ec9df00a8671c74f1f3a320564c6415a4ed82a1c651654ba/greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9", size = 613077 }, + { url = "https://files.pythonhosted.org/packages/19/c5/36384a06f748044d06bdd8776e231fadf92fc896bd12cb1c9f5a1bda9578/greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0", size = 1135975 }, + { url = "https://files.pythonhosted.org/packages/38/f9/c0a0eb61bdf808d23266ecf1d63309f0e1471f284300ce6dac0ae1231881/greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942", size = 1163955 }, + { url = "https://files.pythonhosted.org/packages/43/21/a5d9df1d21514883333fc86584c07c2b49ba7c602e670b174bd73cfc9c7f/greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01", size = 299655 }, + { url = "https://files.pythonhosted.org/packages/f3/57/0db4940cd7bb461365ca8d6fd53e68254c9dbbcc2b452e69d0d41f10a85e/greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1", size = 272990 }, + { url = "https://files.pythonhosted.org/packages/1c/ec/423d113c9f74e5e402e175b157203e9102feeb7088cee844d735b28ef963/greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff", size = 649175 }, + { url = "https://files.pythonhosted.org/packages/a9/46/ddbd2db9ff209186b7b7c621d1432e2f21714adc988703dbdd0e65155c77/greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a", size = 663425 }, + { url = "https://files.pythonhosted.org/packages/bc/f9/9c82d6b2b04aa37e38e74f0c429aece5eeb02bab6e3b98e7db89b23d94c6/greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e", size = 657736 }, + { url = "https://files.pythonhosted.org/packages/d9/42/b87bc2a81e3a62c3de2b0d550bf91a86939442b7ff85abb94eec3fc0e6aa/greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4", size = 660347 }, + { url = "https://files.pythonhosted.org/packages/37/fa/71599c3fd06336cdc3eac52e6871cfebab4d9d70674a9a9e7a482c318e99/greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e", size = 615583 }, + { url = "https://files.pythonhosted.org/packages/4e/96/e9ef85de031703ee7a4483489b40cf307f93c1824a02e903106f2ea315fe/greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1", size = 1133039 }, + { url = "https://files.pythonhosted.org/packages/87/76/b2b6362accd69f2d1889db61a18c94bc743e961e3cab344c2effaa4b4a25/greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c", size = 1160716 }, + { url = "https://files.pythonhosted.org/packages/1f/1b/54336d876186920e185066d8c3024ad55f21d7cc3683c856127ddb7b13ce/greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761", size = 299490 }, + { url = "https://files.pythonhosted.org/packages/5f/17/bea55bf36990e1638a2af5ba10c1640273ef20f627962cf97107f1e5d637/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011", size = 643731 }, + { url = "https://files.pythonhosted.org/packages/78/d2/aa3d2157f9ab742a08e0fd8f77d4699f37c22adfbfeb0c610a186b5f75e0/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13", size = 649304 }, + { url = "https://files.pythonhosted.org/packages/f1/8e/d0aeffe69e53ccff5a28fa86f07ad1d2d2d6537a9506229431a2a02e2f15/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475", size = 646537 }, + { url = "https://files.pythonhosted.org/packages/05/79/e15408220bbb989469c8871062c97c6c9136770657ba779711b90870d867/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b", size = 642506 }, + { url = "https://files.pythonhosted.org/packages/18/87/470e01a940307796f1d25f8167b551a968540fbe0551c0ebb853cb527dd6/greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822", size = 602753 }, + { url = "https://files.pythonhosted.org/packages/e2/72/576815ba674eddc3c25028238f74d7b8068902b3968cbe456771b166455e/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01", size = 1122731 }, + { url = "https://files.pythonhosted.org/packages/ac/38/08cc303ddddc4b3d7c628c3039a61a3aae36c241ed01393d00c2fd663473/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6", size = 1142112 }, +] + +[[package]] +name = "h11" +version = "0.14.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f5/38/3af3d3633a34a3316095b39c8e8fb4853a28a536e55d347bd8d8e9a14b03/h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", size = 100418 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761", size = 58259 }, +] + +[[package]] +name = "httpcore" +version = "1.0.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/45/ad3e1b4d448f22c0cff4f5692f5ed0666658578e358b8d58a19846048059/httpcore-1.0.8.tar.gz", hash = "sha256:86e94505ed24ea06514883fd44d2bc02d90e77e7979c8eb71b90f41d364a1bad", size = 85385 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/8d/f052b1e336bb2c1fc7ed1aaed898aa570c0b61a09707b108979d9fc6e308/httpcore-1.0.8-py3-none-any.whl", hash = "sha256:5254cf149bcb5f75e9d1b2b9f729ea4a4b883d1ad7379fc632b727cec23674be", size = 78732 }, +] + +[[package]] +name = "httptools" +version = "0.6.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/9a/ce5e1f7e131522e6d3426e8e7a490b3a01f39a6696602e1c4f33f9e94277/httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c", size = 240639 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/0e/d0b71465c66b9185f90a091ab36389a7352985fe857e352801c39d6127c8/httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2", size = 200683 }, + { url = "https://files.pythonhosted.org/packages/e2/b8/412a9bb28d0a8988de3296e01efa0bd62068b33856cdda47fe1b5e890954/httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44", size = 104337 }, + { url = "https://files.pythonhosted.org/packages/9b/01/6fb20be3196ffdc8eeec4e653bc2a275eca7f36634c86302242c4fbb2760/httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1", size = 508796 }, + { url = "https://files.pythonhosted.org/packages/f7/d8/b644c44acc1368938317d76ac991c9bba1166311880bcc0ac297cb9d6bd7/httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2", size = 510837 }, + { url = "https://files.pythonhosted.org/packages/52/d8/254d16a31d543073a0e57f1c329ca7378d8924e7e292eda72d0064987486/httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81", size = 485289 }, + { url = "https://files.pythonhosted.org/packages/5f/3c/4aee161b4b7a971660b8be71a92c24d6c64372c1ab3ae7f366b3680df20f/httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f", size = 489779 }, + { url = "https://files.pythonhosted.org/packages/12/b7/5cae71a8868e555f3f67a50ee7f673ce36eac970f029c0c5e9d584352961/httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970", size = 88634 }, + { url = "https://files.pythonhosted.org/packages/94/a3/9fe9ad23fd35f7de6b91eeb60848986058bd8b5a5c1e256f5860a160cc3e/httptools-0.6.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ade273d7e767d5fae13fa637f4d53b6e961fb7fd93c7797562663f0171c26660", size = 197214 }, + { url = "https://files.pythonhosted.org/packages/ea/d9/82d5e68bab783b632023f2fa31db20bebb4e89dfc4d2293945fd68484ee4/httptools-0.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:856f4bc0478ae143bad54a4242fccb1f3f86a6e1be5548fecfd4102061b3a083", size = 102431 }, + { url = "https://files.pythonhosted.org/packages/96/c1/cb499655cbdbfb57b577734fde02f6fa0bbc3fe9fb4d87b742b512908dff/httptools-0.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:322d20ea9cdd1fa98bd6a74b77e2ec5b818abdc3d36695ab402a0de8ef2865a3", size = 473121 }, + { url = "https://files.pythonhosted.org/packages/af/71/ee32fd358f8a3bb199b03261f10921716990808a675d8160b5383487a317/httptools-0.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d87b29bd4486c0093fc64dea80231f7c7f7eb4dc70ae394d70a495ab8436071", size = 473805 }, + { url = "https://files.pythonhosted.org/packages/8a/0a/0d4df132bfca1507114198b766f1737d57580c9ad1cf93c1ff673e3387be/httptools-0.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:342dd6946aa6bda4b8f18c734576106b8a31f2fe31492881a9a160ec84ff4bd5", size = 448858 }, + { url = "https://files.pythonhosted.org/packages/1e/6a/787004fdef2cabea27bad1073bf6a33f2437b4dbd3b6fb4a9d71172b1c7c/httptools-0.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b36913ba52008249223042dca46e69967985fb4051951f94357ea681e1f5dc0", size = 452042 }, + { url = "https://files.pythonhosted.org/packages/4d/dc/7decab5c404d1d2cdc1bb330b1bf70e83d6af0396fd4fc76fc60c0d522bf/httptools-0.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:28908df1b9bb8187393d5b5db91435ccc9c8e891657f9cbb42a2541b44c82fc8", size = 87682 }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, +] + +[[package]] +name = "jsonschema" +version = "4.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2024.10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/10/db/58f950c996c793472e336ff3655b13fbcf1e3b359dcf52dcf3ed3b52c352/jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272", size = 15561 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/0f/8910b19ac0670a0f80ce1008e5e751c4a57e14d2c4c13a482aa6079fa9d6/jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf", size = 18459 }, +] + +[[package]] +name = "jwcrypto" +version = "1.5.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/db/870e5d5fb311b0bcf049630b5ba3abca2d339fd5e13ba175b4c13b456d08/jwcrypto-1.5.6.tar.gz", hash = "sha256:771a87762a0c081ae6166958a954f80848820b2ab066937dc8b8379d65b1b039", size = 87168 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/58/4a1880ea64032185e9ae9f63940c9327c6952d5584ea544a8f66972f2fda/jwcrypto-1.5.6-py3-none-any.whl", hash = "sha256:150d2b0ebbdb8f40b77f543fb44ffd2baeff48788be71f67f03566692fd55789", size = 92520 }, +] + +[[package]] +name = "licensing" +version = "0.0.1" +source = { editable = "." } +dependencies = [ + { name = "aiohttp" }, + { name = "alembic" }, + { name = "asgi-correlation-id" }, + { name = "asyncpg" }, + { name = "click" }, + { name = "cryptography" }, + { name = "elastic-apm" }, + { name = "fastapi" }, + { name = "fastapi-pagination" }, + { name = "httptools" }, + { name = "httpx" }, + { name = "jsonschema" }, + { name = "jwcrypto" }, + { name = "pydantic" }, + { name = "python-dateutil" }, + { name = "python-decouple" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "sqlalchemy", extra = ["asyncio"] }, + { name = "structlog" }, + { name = "uvicorn" }, +] + +[package.optional-dependencies] +export = [ + { name = "motor" }, + { name = "paramiko" }, + { name = "sshtunnel" }, +] +tests = [ + { name = "black" }, + { name = "bump2version" }, + { name = "commitizen" }, + { name = "freezegun" }, + { name = "mock" }, + { name = "pytest" }, + { name = "pytest-anything" }, + { name = "pytest-asyncio" }, + { name = "pytest-cov" }, + { name = "pytest-env" }, + { name = "pytest-mock" }, + { name = "pytest-watch" }, +] + +[package.metadata] +requires-dist = [ + { name = "aiohttp", specifier = "==3.11.11" }, + { name = "alembic", specifier = "==1.14.0" }, + { name = "asgi-correlation-id", specifier = "==4.3.4" }, + { name = "asyncpg", specifier = "==0.30.0" }, + { name = "black", marker = "extra == 'tests'", specifier = "==25.1.0" }, + { name = "bump2version", marker = "extra == 'tests'", specifier = "==1.0.1" }, + { name = "click", specifier = "==8.1.8" }, + { name = "commitizen", marker = "extra == 'tests'", specifier = "==4.1.0" }, + { name = "cryptography", specifier = "==42.0.7" }, + { name = "elastic-apm", specifier = "==6.23.0" }, + { name = "fastapi", specifier = "==0.115.6" }, + { name = "fastapi-pagination", specifier = "==0.12.34" }, + { name = "freezegun", marker = "extra == 'tests'", specifier = "==1.5.1" }, + { name = "httptools", specifier = "==0.6.4" }, + { name = "httpx", specifier = "==0.28.1" }, + { name = "jsonschema", specifier = "==4.23.0" }, + { name = "jwcrypto", specifier = "==1.5.6" }, + { name = "mock", marker = "extra == 'tests'", specifier = "==5.1.0" }, + { name = "motor", marker = "extra == 'export'", specifier = "==3.6.0" }, + { name = "paramiko", marker = "extra == 'export'", specifier = "==3.5.0" }, + { name = "pydantic", specifier = "==2.10.4" }, + { name = "pytest", marker = "extra == 'tests'", specifier = "==8.3.4" }, + { name = "pytest-anything", marker = "extra == 'tests'", specifier = "==0.1.4" }, + { name = "pytest-asyncio", marker = "extra == 'tests'", specifier = "==0.25.1" }, + { name = "pytest-cov", marker = "extra == 'tests'", specifier = "==6.0.0" }, + { name = "pytest-env", marker = "extra == 'tests'", specifier = "==1.1.5" }, + { name = "pytest-mock", marker = "extra == 'tests'", specifier = "==3.14.0" }, + { name = "pytest-watch", marker = "extra == 'tests'", specifier = "==4.2.0" }, + { name = "python-dateutil", specifier = "==2.9.0.post0" }, + { name = "python-decouple", specifier = "==3.8" }, + { name = "pyyaml", specifier = "==6.0.2" }, + { name = "requests", specifier = "==2.32.3" }, + { name = "sqlalchemy", extras = ["asyncio"], specifier = "==2.0.36" }, + { name = "sshtunnel", marker = "extra == 'export'", specifier = "==0.4.0" }, + { name = "structlog", specifier = "==24.4.0" }, + { name = "uvicorn", specifier = "==0.34.0" }, +] +provides-extras = ["export", "tests"] + +[[package]] +name = "mako" +version = "1.3.10" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/38/bd5b78a920a64d708fe6bc8e0a2c075e1389d53bef8413725c63ba041535/mako-1.3.10.tar.gz", hash = "sha256:99579a6f39583fa7e5630a28c3c1f440e4e97a414b80372649c0ce338da2ea28", size = 392474 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/fb/99f81ac72ae23375f22b7afdb7642aba97c00a713c217124420147681a2f/mako-1.3.10-py3-none-any.whl", hash = "sha256:baef24a52fc4fc514a0887ac600f9f1cff3d82c61d4d700a1fa84d597b88db59", size = 78509 }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, +] + +[[package]] +name = "mock" +version = "5.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/ab/41d09a46985ead5839d8be987acda54b5bb93f713b3969cc0be4f81c455b/mock-5.1.0.tar.gz", hash = "sha256:5e96aad5ccda4718e0a229ed94b2024df75cc2d55575ba5762d31f5767b8767d", size = 80232 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/20/471f41173930550f279ccb65596a5ac19b9ac974a8d93679bcd3e0c31498/mock-5.1.0-py3-none-any.whl", hash = "sha256:18c694e5ae8a208cdb3d2c20a993ca1a7b0efa258c247a1e565150f477f83744", size = 30938 }, +] + +[[package]] +name = "motor" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pymongo" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6a/d1/06af0527fd02d49b203db70dba462e47275a3c1094f830fdaf090f0cb20c/motor-3.6.0.tar.gz", hash = "sha256:0ef7f520213e852bf0eac306adf631aabe849227d8aec900a2612512fb9c5b8d", size = 278447 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/c2/bba4dce0dc56e49d95c270c79c9330ed19e6b71a2a633aecf53e7e1f04c9/motor-3.6.0-py3-none-any.whl", hash = "sha256:9f07ed96f1754963d4386944e1b52d403a5350c687edc60da487d66f98dbf894", size = 74802 }, +] + +[[package]] +name = "multidict" +version = "6.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/2c/e367dfb4c6538614a0c9453e510d75d66099edf1c4e69da1b5ce691a1931/multidict-6.4.3.tar.gz", hash = "sha256:3ada0b058c9f213c5f95ba301f922d402ac234f1111a7d8fd70f1b99f3c281ec", size = 89372 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/bb/3abdaf8fe40e9226ce8a2ba5ecf332461f7beec478a455d6587159f1bf92/multidict-6.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1f1c2f58f08b36f8475f3ec6f5aeb95270921d418bf18f90dffd6be5c7b0e676", size = 64019 }, + { url = "https://files.pythonhosted.org/packages/7e/b5/1b2e8de8217d2e89db156625aa0fe4a6faad98972bfe07a7b8c10ef5dd6b/multidict-6.4.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:26ae9ad364fc61b936fb7bf4c9d8bd53f3a5b4417142cd0be5c509d6f767e2f1", size = 37925 }, + { url = "https://files.pythonhosted.org/packages/b4/e2/3ca91c112644a395c8eae017144c907d173ea910c913ff8b62549dcf0bbf/multidict-6.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:659318c6c8a85f6ecfc06b4e57529e5a78dfdd697260cc81f683492ad7e9435a", size = 37008 }, + { url = "https://files.pythonhosted.org/packages/60/23/79bc78146c7ac8d1ac766b2770ca2e07c2816058b8a3d5da6caed8148637/multidict-6.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1eb72c741fd24d5a28242ce72bb61bc91f8451877131fa3fe930edb195f7054", size = 224374 }, + { url = "https://files.pythonhosted.org/packages/86/35/77950ed9ebd09136003a85c1926ba42001ca5be14feb49710e4334ee199b/multidict-6.4.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3cd06d88cb7398252284ee75c8db8e680aa0d321451132d0dba12bc995f0adcc", size = 230869 }, + { url = "https://files.pythonhosted.org/packages/49/97/2a33c6e7d90bc116c636c14b2abab93d6521c0c052d24bfcc231cbf7f0e7/multidict-6.4.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4543d8dc6470a82fde92b035a92529317191ce993533c3c0c68f56811164ed07", size = 231949 }, + { url = "https://files.pythonhosted.org/packages/56/ce/e9b5d9fcf854f61d6686ada7ff64893a7a5523b2a07da6f1265eaaea5151/multidict-6.4.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:30a3ebdc068c27e9d6081fca0e2c33fdf132ecea703a72ea216b81a66860adde", size = 231032 }, + { url = "https://files.pythonhosted.org/packages/f0/ac/7ced59dcdfeddd03e601edb05adff0c66d81ed4a5160c443e44f2379eef0/multidict-6.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b038f10e23f277153f86f95c777ba1958bcd5993194fda26a1d06fae98b2f00c", size = 223517 }, + { url = "https://files.pythonhosted.org/packages/db/e6/325ed9055ae4e085315193a1b58bdb4d7fc38ffcc1f4975cfca97d015e17/multidict-6.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c605a2b2dc14282b580454b9b5d14ebe0668381a3a26d0ac39daa0ca115eb2ae", size = 216291 }, + { url = "https://files.pythonhosted.org/packages/fa/84/eeee6d477dd9dcb7691c3bb9d08df56017f5dd15c730bcc9383dcf201cf4/multidict-6.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8bd2b875f4ca2bb527fe23e318ddd509b7df163407b0fb717df229041c6df5d3", size = 228982 }, + { url = "https://files.pythonhosted.org/packages/82/94/4d1f3e74e7acf8b0c85db350e012dcc61701cd6668bc2440bb1ecb423c90/multidict-6.4.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c2e98c840c9c8e65c0e04b40c6c5066c8632678cd50c8721fdbcd2e09f21a507", size = 226823 }, + { url = "https://files.pythonhosted.org/packages/09/f0/1e54b95bda7cd01080e5732f9abb7b76ab5cc795b66605877caeb2197476/multidict-6.4.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:66eb80dd0ab36dbd559635e62fba3083a48a252633164857a1d1684f14326427", size = 222714 }, + { url = "https://files.pythonhosted.org/packages/e7/a2/f6cbca875195bd65a3e53b37ab46486f3cc125bdeab20eefe5042afa31fb/multidict-6.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c23831bdee0a2a3cf21be057b5e5326292f60472fb6c6f86392bbf0de70ba731", size = 233739 }, + { url = "https://files.pythonhosted.org/packages/79/68/9891f4d2b8569554723ddd6154375295f789dc65809826c6fb96a06314fd/multidict-6.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1535cec6443bfd80d028052e9d17ba6ff8a5a3534c51d285ba56c18af97e9713", size = 230809 }, + { url = "https://files.pythonhosted.org/packages/e6/72/a7be29ba1e87e4fc5ceb44dabc7940b8005fd2436a332a23547709315f70/multidict-6.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3b73e7227681f85d19dec46e5b881827cd354aabe46049e1a61d2f9aaa4e285a", size = 226934 }, + { url = "https://files.pythonhosted.org/packages/12/c1/259386a9ad6840ff7afc686da96808b503d152ac4feb3a96c651dc4f5abf/multidict-6.4.3-cp312-cp312-win32.whl", hash = "sha256:8eac0c49df91b88bf91f818e0a24c1c46f3622978e2c27035bfdca98e0e18124", size = 35242 }, + { url = "https://files.pythonhosted.org/packages/06/24/c8fdff4f924d37225dc0c56a28b1dca10728fc2233065fafeb27b4b125be/multidict-6.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:11990b5c757d956cd1db7cb140be50a63216af32cd6506329c2c59d732d802db", size = 38635 }, + { url = "https://files.pythonhosted.org/packages/6c/4b/86fd786d03915c6f49998cf10cd5fe6b6ac9e9a071cb40885d2e080fb90d/multidict-6.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a76534263d03ae0cfa721fea40fd2b5b9d17a6f85e98025931d41dc49504474", size = 63831 }, + { url = "https://files.pythonhosted.org/packages/45/05/9b51fdf7aef2563340a93be0a663acba2c428c4daeaf3960d92d53a4a930/multidict-6.4.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:805031c2f599eee62ac579843555ed1ce389ae00c7e9f74c2a1b45e0564a88dd", size = 37888 }, + { url = "https://files.pythonhosted.org/packages/0b/43/53fc25394386c911822419b522181227ca450cf57fea76e6188772a1bd91/multidict-6.4.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c56c179839d5dcf51d565132185409d1d5dd8e614ba501eb79023a6cab25576b", size = 36852 }, + { url = "https://files.pythonhosted.org/packages/8a/68/7b99c751e822467c94a235b810a2fd4047d4ecb91caef6b5c60116991c4b/multidict-6.4.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c64f4ddb3886dd8ab71b68a7431ad4aa01a8fa5be5b11543b29674f29ca0ba3", size = 223644 }, + { url = "https://files.pythonhosted.org/packages/80/1b/d458d791e4dd0f7e92596667784fbf99e5c8ba040affe1ca04f06b93ae92/multidict-6.4.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3002a856367c0b41cad6784f5b8d3ab008eda194ed7864aaa58f65312e2abcac", size = 230446 }, + { url = "https://files.pythonhosted.org/packages/e2/46/9793378d988905491a7806d8987862dc5a0bae8a622dd896c4008c7b226b/multidict-6.4.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d75e621e7d887d539d6e1d789f0c64271c250276c333480a9e1de089611f790", size = 231070 }, + { url = "https://files.pythonhosted.org/packages/a7/b8/b127d3e1f8dd2a5bf286b47b24567ae6363017292dc6dec44656e6246498/multidict-6.4.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:995015cf4a3c0d72cbf453b10a999b92c5629eaf3a0c3e1efb4b5c1f602253bb", size = 229956 }, + { url = "https://files.pythonhosted.org/packages/0c/93/f70a4c35b103fcfe1443059a2bb7f66e5c35f2aea7804105ff214f566009/multidict-6.4.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2b0fabae7939d09d7d16a711468c385272fa1b9b7fb0d37e51143585d8e72e0", size = 222599 }, + { url = "https://files.pythonhosted.org/packages/63/8c/e28e0eb2fe34921d6aa32bfc4ac75b09570b4d6818cc95d25499fe08dc1d/multidict-6.4.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:61ed4d82f8a1e67eb9eb04f8587970d78fe7cddb4e4d6230b77eda23d27938f9", size = 216136 }, + { url = "https://files.pythonhosted.org/packages/72/f5/fbc81f866585b05f89f99d108be5d6ad170e3b6c4d0723d1a2f6ba5fa918/multidict-6.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:062428944a8dc69df9fdc5d5fc6279421e5f9c75a9ee3f586f274ba7b05ab3c8", size = 228139 }, + { url = "https://files.pythonhosted.org/packages/bb/ba/7d196bad6b85af2307d81f6979c36ed9665f49626f66d883d6c64d156f78/multidict-6.4.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:b90e27b4674e6c405ad6c64e515a505c6d113b832df52fdacb6b1ffd1fa9a1d1", size = 226251 }, + { url = "https://files.pythonhosted.org/packages/cc/e2/fae46a370dce79d08b672422a33df721ec8b80105e0ea8d87215ff6b090d/multidict-6.4.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7d50d4abf6729921e9613d98344b74241572b751c6b37feed75fb0c37bd5a817", size = 221868 }, + { url = "https://files.pythonhosted.org/packages/26/20/bbc9a3dec19d5492f54a167f08546656e7aef75d181d3d82541463450e88/multidict-6.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:43fe10524fb0a0514be3954be53258e61d87341008ce4914f8e8b92bee6f875d", size = 233106 }, + { url = "https://files.pythonhosted.org/packages/ee/8d/f30ae8f5ff7a2461177f4d8eb0d8f69f27fb6cfe276b54ec4fd5a282d918/multidict-6.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:236966ca6c472ea4e2d3f02f6673ebfd36ba3f23159c323f5a496869bc8e47c9", size = 230163 }, + { url = "https://files.pythonhosted.org/packages/15/e9/2833f3c218d3c2179f3093f766940ded6b81a49d2e2f9c46ab240d23dfec/multidict-6.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:422a5ec315018e606473ba1f5431e064cf8b2a7468019233dcf8082fabad64c8", size = 225906 }, + { url = "https://files.pythonhosted.org/packages/f1/31/6edab296ac369fd286b845fa5dd4c409e63bc4655ed8c9510fcb477e9ae9/multidict-6.4.3-cp313-cp313-win32.whl", hash = "sha256:f901a5aace8e8c25d78960dcc24c870c8d356660d3b49b93a78bf38eb682aac3", size = 35238 }, + { url = "https://files.pythonhosted.org/packages/23/57/2c0167a1bffa30d9a1383c3dab99d8caae985defc8636934b5668830d2ef/multidict-6.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:1c152c49e42277bc9a2f7b78bd5fa10b13e88d1b0328221e7aef89d5c60a99a5", size = 38799 }, + { url = "https://files.pythonhosted.org/packages/c9/13/2ead63b9ab0d2b3080819268acb297bd66e238070aa8d42af12b08cbee1c/multidict-6.4.3-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:be8751869e28b9c0d368d94f5afcb4234db66fe8496144547b4b6d6a0645cfc6", size = 68642 }, + { url = "https://files.pythonhosted.org/packages/85/45/f1a751e1eede30c23951e2ae274ce8fad738e8a3d5714be73e0a41b27b16/multidict-6.4.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0d4b31f8a68dccbcd2c0ea04f0e014f1defc6b78f0eb8b35f2265e8716a6df0c", size = 40028 }, + { url = "https://files.pythonhosted.org/packages/a7/29/fcc53e886a2cc5595cc4560df333cb9630257bda65003a7eb4e4e0d8f9c1/multidict-6.4.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:032efeab3049e37eef2ff91271884303becc9e54d740b492a93b7e7266e23756", size = 39424 }, + { url = "https://files.pythonhosted.org/packages/f6/f0/056c81119d8b88703971f937b371795cab1407cd3c751482de5bfe1a04a9/multidict-6.4.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e78006af1a7c8a8007e4f56629d7252668344442f66982368ac06522445e375", size = 226178 }, + { url = "https://files.pythonhosted.org/packages/a3/79/3b7e5fea0aa80583d3a69c9d98b7913dfd4fbc341fb10bb2fb48d35a9c21/multidict-6.4.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:daeac9dd30cda8703c417e4fddccd7c4dc0c73421a0b54a7da2713be125846be", size = 222617 }, + { url = "https://files.pythonhosted.org/packages/06/db/3ed012b163e376fc461e1d6a67de69b408339bc31dc83d39ae9ec3bf9578/multidict-6.4.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f6f90700881438953eae443a9c6f8a509808bc3b185246992c4233ccee37fea", size = 227919 }, + { url = "https://files.pythonhosted.org/packages/b1/db/0433c104bca380989bc04d3b841fc83e95ce0c89f680e9ea4251118b52b6/multidict-6.4.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f84627997008390dd15762128dcf73c3365f4ec0106739cde6c20a07ed198ec8", size = 226097 }, + { url = "https://files.pythonhosted.org/packages/c2/95/910db2618175724dd254b7ae635b6cd8d2947a8b76b0376de7b96d814dab/multidict-6.4.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3307b48cd156153b117c0ea54890a3bdbf858a5b296ddd40dc3852e5f16e9b02", size = 220706 }, + { url = "https://files.pythonhosted.org/packages/d1/af/aa176c6f5f1d901aac957d5258d5e22897fe13948d1e69063ae3d5d0ca01/multidict-6.4.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ead46b0fa1dcf5af503a46e9f1c2e80b5d95c6011526352fa5f42ea201526124", size = 211728 }, + { url = "https://files.pythonhosted.org/packages/e7/42/d51cc5fc1527c3717d7f85137d6c79bb7a93cd214c26f1fc57523774dbb5/multidict-6.4.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:1748cb2743bedc339d63eb1bca314061568793acd603a6e37b09a326334c9f44", size = 226276 }, + { url = "https://files.pythonhosted.org/packages/28/6b/d836dea45e0b8432343ba4acf9a8ecaa245da4c0960fb7ab45088a5e568a/multidict-6.4.3-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:acc9fa606f76fc111b4569348cc23a771cb52c61516dcc6bcef46d612edb483b", size = 212069 }, + { url = "https://files.pythonhosted.org/packages/55/34/0ee1a7adb3560e18ee9289c6e5f7db54edc312b13e5c8263e88ea373d12c/multidict-6.4.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:31469d5832b5885adeb70982e531ce86f8c992334edd2f2254a10fa3182ac504", size = 217858 }, + { url = "https://files.pythonhosted.org/packages/04/08/586d652c2f5acefe0cf4e658eedb4d71d4ba6dfd4f189bd81b400fc1bc6b/multidict-6.4.3-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:ba46b51b6e51b4ef7bfb84b82f5db0dc5e300fb222a8a13b8cd4111898a869cf", size = 226988 }, + { url = "https://files.pythonhosted.org/packages/82/e3/cc59c7e2bc49d7f906fb4ffb6d9c3a3cf21b9f2dd9c96d05bef89c2b1fd1/multidict-6.4.3-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:389cfefb599edf3fcfd5f64c0410da686f90f5f5e2c4d84e14f6797a5a337af4", size = 220435 }, + { url = "https://files.pythonhosted.org/packages/e0/32/5c3a556118aca9981d883f38c4b1bfae646f3627157f70f4068e5a648955/multidict-6.4.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:64bc2bbc5fba7b9db5c2c8d750824f41c6994e3882e6d73c903c2afa78d091e4", size = 221494 }, + { url = "https://files.pythonhosted.org/packages/b9/3b/1599631f59024b75c4d6e3069f4502409970a336647502aaf6b62fb7ac98/multidict-6.4.3-cp313-cp313t-win32.whl", hash = "sha256:0ecdc12ea44bab2807d6b4a7e5eef25109ab1c82a8240d86d3c1fc9f3b72efd5", size = 41775 }, + { url = "https://files.pythonhosted.org/packages/e8/4e/09301668d675d02ca8e8e1a3e6be046619e30403f5ada2ed5b080ae28d02/multidict-6.4.3-cp313-cp313t-win_amd64.whl", hash = "sha256:7146a8742ea71b5d7d955bffcef58a9e6e04efba704b52a460134fefd10a8208", size = 45946 }, + { url = "https://files.pythonhosted.org/packages/96/10/7d526c8974f017f1e7ca584c71ee62a638e9334d8d33f27d7cdfc9ae79e4/multidict-6.4.3-py3-none-any.whl", hash = "sha256:59fe01ee8e2a1e8ceb3f6dbb216b09c8d9f4ef1c22c4fc825d045a147fa2ebc9", size = 10400 }, +] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, +] + +[[package]] +name = "packaging" +version = "24.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, +] + +[[package]] +name = "paramiko" +version = "3.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "bcrypt" }, + { name = "cryptography" }, + { name = "pynacl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1b/0f/c00296e36ff7485935b83d466c4f2cf5934b84b0ad14e81796e1d9d3609b/paramiko-3.5.0.tar.gz", hash = "sha256:ad11e540da4f55cedda52931f1a3f812a8238a7af7f62a60de538cd80bb28124", size = 1704305 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/66/14b2c030fcce69cba482d205c2d1462ca5c77303a263260dcb1192801c85/paramiko-3.5.0-py3-none-any.whl", hash = "sha256:1fedf06b085359051cd7d0d270cebe19e755a8a921cc2ddbfa647fb0cd7d68f9", size = 227143 }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, +] + +[[package]] +name = "platformdirs" +version = "4.3.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/2d/7d512a3913d60623e7eb945c6d1b4f0bddf1d0b7ada5225274c87e5b53d1/platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351", size = 21291 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/45/59578566b3275b8fd9157885918fcd0c4d74162928a5310926887b856a51/platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94", size = 18499 }, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.51" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810 }, +] + +[[package]] +name = "propcache" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430 }, + { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637 }, + { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123 }, + { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031 }, + { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100 }, + { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170 }, + { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000 }, + { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262 }, + { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772 }, + { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133 }, + { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741 }, + { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047 }, + { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467 }, + { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022 }, + { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647 }, + { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784 }, + { url = "https://files.pythonhosted.org/packages/58/60/f645cc8b570f99be3cf46714170c2de4b4c9d6b827b912811eff1eb8a412/propcache-0.3.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f1528ec4374617a7a753f90f20e2f551121bb558fcb35926f99e3c42367164b8", size = 77865 }, + { url = "https://files.pythonhosted.org/packages/6f/d4/c1adbf3901537582e65cf90fd9c26fde1298fde5a2c593f987112c0d0798/propcache-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dc1915ec523b3b494933b5424980831b636fe483d7d543f7afb7b3bf00f0c10f", size = 45452 }, + { url = "https://files.pythonhosted.org/packages/d1/b5/fe752b2e63f49f727c6c1c224175d21b7d1727ce1d4873ef1c24c9216830/propcache-0.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a110205022d077da24e60b3df8bcee73971be9575dec5573dd17ae5d81751111", size = 44800 }, + { url = "https://files.pythonhosted.org/packages/62/37/fc357e345bc1971e21f76597028b059c3d795c5ca7690d7a8d9a03c9708a/propcache-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d249609e547c04d190e820d0d4c8ca03ed4582bcf8e4e160a6969ddfb57b62e5", size = 225804 }, + { url = "https://files.pythonhosted.org/packages/0d/f1/16e12c33e3dbe7f8b737809bad05719cff1dccb8df4dafbcff5575002c0e/propcache-0.3.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ced33d827625d0a589e831126ccb4f5c29dfdf6766cac441d23995a65825dcb", size = 230650 }, + { url = "https://files.pythonhosted.org/packages/3e/a2/018b9f2ed876bf5091e60153f727e8f9073d97573f790ff7cdf6bc1d1fb8/propcache-0.3.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4114c4ada8f3181af20808bedb250da6bae56660e4b8dfd9cd95d4549c0962f7", size = 234235 }, + { url = "https://files.pythonhosted.org/packages/45/5f/3faee66fc930dfb5da509e34c6ac7128870631c0e3582987fad161fcb4b1/propcache-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:975af16f406ce48f1333ec5e912fe11064605d5c5b3f6746969077cc3adeb120", size = 228249 }, + { url = "https://files.pythonhosted.org/packages/62/1e/a0d5ebda5da7ff34d2f5259a3e171a94be83c41eb1e7cd21a2105a84a02e/propcache-0.3.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a34aa3a1abc50740be6ac0ab9d594e274f59960d3ad253cd318af76b996dd654", size = 214964 }, + { url = "https://files.pythonhosted.org/packages/db/a0/d72da3f61ceab126e9be1f3bc7844b4e98c6e61c985097474668e7e52152/propcache-0.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9cec3239c85ed15bfaded997773fdad9fb5662b0a7cbc854a43f291eb183179e", size = 222501 }, + { url = "https://files.pythonhosted.org/packages/18/6d/a008e07ad7b905011253adbbd97e5b5375c33f0b961355ca0a30377504ac/propcache-0.3.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:05543250deac8e61084234d5fc54f8ebd254e8f2b39a16b1dce48904f45b744b", size = 217917 }, + { url = "https://files.pythonhosted.org/packages/98/37/02c9343ffe59e590e0e56dc5c97d0da2b8b19fa747ebacf158310f97a79a/propcache-0.3.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5cb5918253912e088edbf023788de539219718d3b10aef334476b62d2b53de53", size = 217089 }, + { url = "https://files.pythonhosted.org/packages/53/1b/d3406629a2c8a5666d4674c50f757a77be119b113eedd47b0375afdf1b42/propcache-0.3.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f3bbecd2f34d0e6d3c543fdb3b15d6b60dd69970c2b4c822379e5ec8f6f621d5", size = 228102 }, + { url = "https://files.pythonhosted.org/packages/cd/a7/3664756cf50ce739e5f3abd48febc0be1a713b1f389a502ca819791a6b69/propcache-0.3.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aca63103895c7d960a5b9b044a83f544b233c95e0dcff114389d64d762017af7", size = 230122 }, + { url = "https://files.pythonhosted.org/packages/35/36/0bbabaacdcc26dac4f8139625e930f4311864251276033a52fd52ff2a274/propcache-0.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a0a9898fdb99bf11786265468571e628ba60af80dc3f6eb89a3545540c6b0ef", size = 226818 }, + { url = "https://files.pythonhosted.org/packages/cc/27/4e0ef21084b53bd35d4dae1634b6d0bad35e9c58ed4f032511acca9d4d26/propcache-0.3.1-cp313-cp313-win32.whl", hash = "sha256:3a02a28095b5e63128bcae98eb59025924f121f048a62393db682f049bf4ac24", size = 40112 }, + { url = "https://files.pythonhosted.org/packages/a6/2c/a54614d61895ba6dd7ac8f107e2b2a0347259ab29cbf2ecc7b94fa38c4dc/propcache-0.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:813fbb8b6aea2fc9659815e585e548fe706d6f663fa73dff59a1677d4595a037", size = 44034 }, + { url = "https://files.pythonhosted.org/packages/5a/a8/0a4fd2f664fc6acc66438370905124ce62e84e2e860f2557015ee4a61c7e/propcache-0.3.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a444192f20f5ce8a5e52761a031b90f5ea6288b1eef42ad4c7e64fef33540b8f", size = 82613 }, + { url = "https://files.pythonhosted.org/packages/4d/e5/5ef30eb2cd81576256d7b6caaa0ce33cd1d2c2c92c8903cccb1af1a4ff2f/propcache-0.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0fbe94666e62ebe36cd652f5fc012abfbc2342de99b523f8267a678e4dfdee3c", size = 47763 }, + { url = "https://files.pythonhosted.org/packages/87/9a/87091ceb048efeba4d28e903c0b15bcc84b7c0bf27dc0261e62335d9b7b8/propcache-0.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f011f104db880f4e2166bcdcf7f58250f7a465bc6b068dc84c824a3d4a5c94dc", size = 47175 }, + { url = "https://files.pythonhosted.org/packages/3e/2f/854e653c96ad1161f96194c6678a41bbb38c7947d17768e8811a77635a08/propcache-0.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e584b6d388aeb0001d6d5c2bd86b26304adde6d9bb9bfa9c4889805021b96de", size = 292265 }, + { url = "https://files.pythonhosted.org/packages/40/8d/090955e13ed06bc3496ba4a9fb26c62e209ac41973cb0d6222de20c6868f/propcache-0.3.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a17583515a04358b034e241f952f1715243482fc2c2945fd99a1b03a0bd77d6", size = 294412 }, + { url = "https://files.pythonhosted.org/packages/39/e6/d51601342e53cc7582449e6a3c14a0479fab2f0750c1f4d22302e34219c6/propcache-0.3.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5aed8d8308215089c0734a2af4f2e95eeb360660184ad3912686c181e500b2e7", size = 294290 }, + { url = "https://files.pythonhosted.org/packages/3b/4d/be5f1a90abc1881884aa5878989a1acdafd379a91d9c7e5e12cef37ec0d7/propcache-0.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d8e309ff9a0503ef70dc9a0ebd3e69cf7b3894c9ae2ae81fc10943c37762458", size = 282926 }, + { url = "https://files.pythonhosted.org/packages/57/2b/8f61b998c7ea93a2b7eca79e53f3e903db1787fca9373af9e2cf8dc22f9d/propcache-0.3.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b655032b202028a582d27aeedc2e813299f82cb232f969f87a4fde491a233f11", size = 267808 }, + { url = "https://files.pythonhosted.org/packages/11/1c/311326c3dfce59c58a6098388ba984b0e5fb0381ef2279ec458ef99bd547/propcache-0.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9f64d91b751df77931336b5ff7bafbe8845c5770b06630e27acd5dbb71e1931c", size = 290916 }, + { url = "https://files.pythonhosted.org/packages/4b/74/91939924b0385e54dc48eb2e4edd1e4903ffd053cf1916ebc5347ac227f7/propcache-0.3.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:19a06db789a4bd896ee91ebc50d059e23b3639c25d58eb35be3ca1cbe967c3bf", size = 262661 }, + { url = "https://files.pythonhosted.org/packages/c2/d7/e6079af45136ad325c5337f5dd9ef97ab5dc349e0ff362fe5c5db95e2454/propcache-0.3.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:bef100c88d8692864651b5f98e871fb090bd65c8a41a1cb0ff2322db39c96c27", size = 264384 }, + { url = "https://files.pythonhosted.org/packages/b7/d5/ba91702207ac61ae6f1c2da81c5d0d6bf6ce89e08a2b4d44e411c0bbe867/propcache-0.3.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:87380fb1f3089d2a0b8b00f006ed12bd41bd858fabfa7330c954c70f50ed8757", size = 291420 }, + { url = "https://files.pythonhosted.org/packages/58/70/2117780ed7edcd7ba6b8134cb7802aada90b894a9810ec56b7bb6018bee7/propcache-0.3.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e474fc718e73ba5ec5180358aa07f6aded0ff5f2abe700e3115c37d75c947e18", size = 290880 }, + { url = "https://files.pythonhosted.org/packages/4a/1f/ecd9ce27710021ae623631c0146719280a929d895a095f6d85efb6a0be2e/propcache-0.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:17d1c688a443355234f3c031349da69444be052613483f3e4158eef751abcd8a", size = 287407 }, + { url = "https://files.pythonhosted.org/packages/3e/66/2e90547d6b60180fb29e23dc87bd8c116517d4255240ec6d3f7dc23d1926/propcache-0.3.1-cp313-cp313t-win32.whl", hash = "sha256:359e81a949a7619802eb601d66d37072b79b79c2505e6d3fd8b945538411400d", size = 42573 }, + { url = "https://files.pythonhosted.org/packages/cb/8f/50ad8599399d1861b4d2b6b45271f0ef6af1b09b0a2386a46dbaf19c9535/propcache-0.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e7fb9a84c9abbf2b2683fa3e7b0d7da4d8ecf139a1c635732a8bda29c5214b0e", size = 46757 }, + { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376 }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, +] + +[[package]] +name = "pydantic" +version = "2.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/70/7e/fb60e6fee04d0ef8f15e4e01ff187a196fa976eb0f0ab524af4599e5754c/pydantic-2.10.4.tar.gz", hash = "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06", size = 762094 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/26/3e1bbe954fde7ee22a6e7d31582c642aad9e84ffe4b5fb61e63b87cd326f/pydantic-2.10.4-py3-none-any.whl", hash = "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d", size = 431765 }, +] + +[[package]] +name = "pydantic-core" +version = "2.27.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/74/51c8a5482ca447871c93e142d9d4a92ead74de6c8dc5e66733e22c9bba89/pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0", size = 1893127 }, + { url = "https://files.pythonhosted.org/packages/d3/f3/c97e80721735868313c58b89d2de85fa80fe8dfeeed84dc51598b92a135e/pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef", size = 1811340 }, + { url = "https://files.pythonhosted.org/packages/9e/91/840ec1375e686dbae1bd80a9e46c26a1e0083e1186abc610efa3d9a36180/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7", size = 1822900 }, + { url = "https://files.pythonhosted.org/packages/f6/31/4240bc96025035500c18adc149aa6ffdf1a0062a4b525c932065ceb4d868/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934", size = 1869177 }, + { url = "https://files.pythonhosted.org/packages/fa/20/02fbaadb7808be578317015c462655c317a77a7c8f0ef274bc016a784c54/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6", size = 2038046 }, + { url = "https://files.pythonhosted.org/packages/06/86/7f306b904e6c9eccf0668248b3f272090e49c275bc488a7b88b0823444a4/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c", size = 2685386 }, + { url = "https://files.pythonhosted.org/packages/8d/f0/49129b27c43396581a635d8710dae54a791b17dfc50c70164866bbf865e3/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2", size = 1997060 }, + { url = "https://files.pythonhosted.org/packages/0d/0f/943b4af7cd416c477fd40b187036c4f89b416a33d3cc0ab7b82708a667aa/pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4", size = 2004870 }, + { url = "https://files.pythonhosted.org/packages/35/40/aea70b5b1a63911c53a4c8117c0a828d6790483f858041f47bab0b779f44/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3", size = 1999822 }, + { url = "https://files.pythonhosted.org/packages/f2/b3/807b94fd337d58effc5498fd1a7a4d9d59af4133e83e32ae39a96fddec9d/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4", size = 2130364 }, + { url = "https://files.pythonhosted.org/packages/fc/df/791c827cd4ee6efd59248dca9369fb35e80a9484462c33c6649a8d02b565/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57", size = 2158303 }, + { url = "https://files.pythonhosted.org/packages/9b/67/4e197c300976af185b7cef4c02203e175fb127e414125916bf1128b639a9/pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", size = 1834064 }, + { url = "https://files.pythonhosted.org/packages/1f/ea/cd7209a889163b8dcca139fe32b9687dd05249161a3edda62860430457a5/pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", size = 1989046 }, + { url = "https://files.pythonhosted.org/packages/bc/49/c54baab2f4658c26ac633d798dab66b4c3a9bbf47cff5284e9c182f4137a/pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", size = 1885092 }, + { url = "https://files.pythonhosted.org/packages/41/b1/9bc383f48f8002f99104e3acff6cba1231b29ef76cfa45d1506a5cad1f84/pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b", size = 1892709 }, + { url = "https://files.pythonhosted.org/packages/10/6c/e62b8657b834f3eb2961b49ec8e301eb99946245e70bf42c8817350cbefc/pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154", size = 1811273 }, + { url = "https://files.pythonhosted.org/packages/ba/15/52cfe49c8c986e081b863b102d6b859d9defc63446b642ccbbb3742bf371/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9", size = 1823027 }, + { url = "https://files.pythonhosted.org/packages/b1/1c/b6f402cfc18ec0024120602bdbcebc7bdd5b856528c013bd4d13865ca473/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9", size = 1868888 }, + { url = "https://files.pythonhosted.org/packages/bd/7b/8cb75b66ac37bc2975a3b7de99f3c6f355fcc4d89820b61dffa8f1e81677/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1", size = 2037738 }, + { url = "https://files.pythonhosted.org/packages/c8/f1/786d8fe78970a06f61df22cba58e365ce304bf9b9f46cc71c8c424e0c334/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a", size = 2685138 }, + { url = "https://files.pythonhosted.org/packages/a6/74/d12b2cd841d8724dc8ffb13fc5cef86566a53ed358103150209ecd5d1999/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e", size = 1997025 }, + { url = "https://files.pythonhosted.org/packages/a0/6e/940bcd631bc4d9a06c9539b51f070b66e8f370ed0933f392db6ff350d873/pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4", size = 2004633 }, + { url = "https://files.pythonhosted.org/packages/50/cc/a46b34f1708d82498c227d5d80ce615b2dd502ddcfd8376fc14a36655af1/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27", size = 1999404 }, + { url = "https://files.pythonhosted.org/packages/ca/2d/c365cfa930ed23bc58c41463bae347d1005537dc8db79e998af8ba28d35e/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee", size = 2130130 }, + { url = "https://files.pythonhosted.org/packages/f4/d7/eb64d015c350b7cdb371145b54d96c919d4db516817f31cd1c650cae3b21/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1", size = 2157946 }, + { url = "https://files.pythonhosted.org/packages/a4/99/bddde3ddde76c03b65dfd5a66ab436c4e58ffc42927d4ff1198ffbf96f5f/pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130", size = 1834387 }, + { url = "https://files.pythonhosted.org/packages/71/47/82b5e846e01b26ac6f1893d3c5f9f3a2eb6ba79be26eef0b759b4fe72946/pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee", size = 1990453 }, + { url = "https://files.pythonhosted.org/packages/51/b2/b2b50d5ecf21acf870190ae5d093602d95f66c9c31f9d5de6062eb329ad1/pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", size = 1885186 }, +] + +[[package]] +name = "pymongo" +version = "4.9.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dnspython" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/43/d5e8993bd43e6f9cbe985e8ae1398eb73309e88694ac2ea618eacbc9cea2/pymongo-4.9.2.tar.gz", hash = "sha256:3e63535946f5df7848307b9031aa921f82bb0cbe45f9b0c3296f2173f9283eb0", size = 1889366 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/08/7d95aab0463dc5a2c460a0b4e50a45a743afbe20986f47f87a9a88f43c0c/pymongo-4.9.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8083bbe8cb10bb33dca4d93f8223dd8d848215250bb73867374650bac5fe69e1", size = 941617 }, + { url = "https://files.pythonhosted.org/packages/bb/28/40613d8d97fc33bf2b9187446a6746925623aa04a9a27c9b058e97076f7a/pymongo-4.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a1b8c636bf557c7166e3799bbf1120806ca39e3f06615b141c88d9c9ceae4d8c", size = 941394 }, + { url = "https://files.pythonhosted.org/packages/df/b2/7f1a0d75f538c0dcaa004ea69e28706fa3ca72d848e0a5a7dafd30939fff/pymongo-4.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8aac5dce28454f47576063fbad31ea9789bba67cab86c95788f97aafd810e65b", size = 1907396 }, + { url = "https://files.pythonhosted.org/packages/ba/70/9304bae47a361a4b12adb5be714bad41478c0e5bc3d6cf403b328d6398a0/pymongo-4.9.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1d5e7123af1fddf15b2b53e58f20bf5242884e671bcc3860f5e954fe13aeddd", size = 1986029 }, + { url = "https://files.pythonhosted.org/packages/ae/51/ac0378d001995c4a705da64a4a2b8e1732f95de5080b752d69f452930cc7/pymongo-4.9.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe97c847b56d61e533a7af0334193d6b28375b9189effce93129c7e4733794a9", size = 1949088 }, + { url = "https://files.pythonhosted.org/packages/1a/30/e93dc808039dc29fc47acee64f128aa650aacae3e4b57b68e01ff1001cda/pymongo-4.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96ad54433a996e2d1985a9cd8fc82538ca8747c95caae2daf453600cc8c317f9", size = 1910516 }, + { url = "https://files.pythonhosted.org/packages/2b/34/895b9cad3bd5342d5ab51a853ed3a814840ce281d55c6928968e9f3f49f5/pymongo-4.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:98b9cade40f5b13e04492a42ae215c3721099be1014ddfe0fbd23f27e4f62c0c", size = 1860499 }, + { url = "https://files.pythonhosted.org/packages/24/7e/167818f324bf2122d45551680671a3c6406a345d3fcace4e737f57bda4e4/pymongo-4.9.2-cp312-cp312-win32.whl", hash = "sha256:dde6068ae7c62ea8ee2c5701f78c6a75618cada7e11f03893687df87709558de", size = 901282 }, + { url = "https://files.pythonhosted.org/packages/12/6b/b7ffa7114177fc1c60ae529512b82629ff7e25d19be88e97f2d0ddd16717/pymongo-4.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:e1ab6cd7cd2d38ffc7ccdc79fdc166c7a91a63f844a96e3e6b2079c054391c68", size = 924925 }, + { url = "https://files.pythonhosted.org/packages/5b/d6/b57ef5f376e2e171218a98b8c30dfd001aa5cac6338aa7f3ca76e6315667/pymongo-4.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1ad79d6a74f439a068caf9a1e2daeabc20bf895263435484bbd49e90fbea7809", size = 995233 }, + { url = "https://files.pythonhosted.org/packages/32/80/4ec79e36e99f86a063d297a334883fb5115ad70e9af46142b8dc33f636fa/pymongo-4.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:877699e21703717507cbbea23e75b419f81a513b50b65531e1698df08b2d7094", size = 995025 }, + { url = "https://files.pythonhosted.org/packages/c4/fd/8f5464321fdf165700f10aec93b07a75c3537be593291ac2f8c8f5f69bd0/pymongo-4.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc9322ce7cf116458a637ac10517b0c5926a8211202be6dbdc51dab4d4a9afc8", size = 2167429 }, + { url = "https://files.pythonhosted.org/packages/da/42/0f749d805d17f5b17f48f2ee1aaf2a74e67939607b87b245e5ec9b4c1452/pymongo-4.9.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cca029f46acf475504eedb33c7839f030c4bc4f946dcba12d9a954cc48850b79", size = 2258834 }, + { url = "https://files.pythonhosted.org/packages/b8/52/b0c1b8e9cbeae234dd1108a906f30b680755533b7229f9f645d7e7adad25/pymongo-4.9.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c8c861e77527eec5a4b7363c16030dd0374670b620b08a5300f97594bbf5a40", size = 2216412 }, + { url = "https://files.pythonhosted.org/packages/4d/20/53395473a1023bb6a670b68fbfa937664c75b354c2444463075ff43523e2/pymongo-4.9.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fc70326ae71b3c7b8d6af82f46bb71dafdba3c8f335b29382ae9cf263ef3a5c", size = 2168891 }, + { url = "https://files.pythonhosted.org/packages/01/b7/fa4030279d8a4a9c0a969a719b6b89da8a59795b5cdf129ef553fce6d1f2/pymongo-4.9.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba9d2f6df977fee24437f82f7412460b0628cd6b961c4235c9cff71577a5b61f", size = 2109380 }, + { url = "https://files.pythonhosted.org/packages/f3/55/f252972a039fc6bfca748625c5080d6f88801eb61f118fe79cde47342d6a/pymongo-4.9.2-cp313-cp313-win32.whl", hash = "sha256:b3254769e708bc4aa634745c262081d13c841a80038eff3afd15631540a1d227", size = 946962 }, + { url = "https://files.pythonhosted.org/packages/7b/36/88d8438699ba09b714dece00a4a7462330c1d316f5eaa28db450572236f6/pymongo-4.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:169b85728cc17800344ba17d736375f400ef47c9fbb4c42910c4b3e7c0247382", size = 975113 }, +] + +[[package]] +name = "pynacl" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba", size = 3392854 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1", size = 349920 }, + { url = "https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92", size = 601722 }, + { url = "https://files.pythonhosted.org/packages/5d/70/87a065c37cca41a75f2ce113a5a2c2aa7533be648b184ade58971b5f7ccc/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394", size = 680087 }, + { url = "https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d", size = 856678 }, + { url = "https://files.pythonhosted.org/packages/66/28/ca86676b69bf9f90e710571b67450508484388bfce09acf8a46f0b8c785f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858", size = 1133660 }, + { url = "https://files.pythonhosted.org/packages/3d/85/c262db650e86812585e2bc59e497a8f59948a005325a11bbbc9ecd3fe26b/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b", size = 663824 }, + { url = "https://files.pythonhosted.org/packages/fd/1a/cc308a884bd299b651f1633acb978e8596c71c33ca85e9dc9fa33a5399b9/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff", size = 1117912 }, + { url = "https://files.pythonhosted.org/packages/25/2d/b7df6ddb0c2a33afdb358f8af6ea3b8c4d1196ca45497dd37a56f0c122be/PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543", size = 204624 }, + { url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93", size = 212141 }, +] + +[[package]] +name = "pytest" +version = "8.3.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083 }, +] + +[[package]] +name = "pytest-anything" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/02/42/d0e1b46582a25ac203e05e2dd203ec9d1af42fa917905113f3a6e26146c5/pytest-anything-0.1.4.tar.gz", hash = "sha256:bf962202c02bc25dda527654ecb0c4fe938c76a09b8e28a860a38ca09bb8f6fa", size = 3522 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/c8/d54541d5a3ec93634ad625a19b67e072ccff6fd5eee5a14ce17f5a3d85b0/pytest_anything-0.1.4-py3-none-any.whl", hash = "sha256:357f86d5655bc300ef3d816a8549ab31e01420b07bdf16142753284329f4870f", size = 3356 }, +] + +[[package]] +name = "pytest-asyncio" +version = "0.25.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4b/04/0477a4bdd176ad678d148c075f43620b3f7a060ff61c7da48500b1fa8a75/pytest_asyncio-0.25.1.tar.gz", hash = "sha256:79be8a72384b0c917677e00daa711e07db15259f4d23203c59012bcd989d4aee", size = 53760 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/fb/efc7226b384befd98d0e00d8c4390ad57f33c8fde00094b85c5e07897def/pytest_asyncio-0.25.1-py3-none-any.whl", hash = "sha256:c84878849ec63ff2ca509423616e071ef9cd8cc93c053aa33b5b8fb70a990671", size = 19357 }, +] + +[[package]] +name = "pytest-cov" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/be/45/9b538de8cef30e17c7b45ef42f538a94889ed6a16f2387a6c89e73220651/pytest-cov-6.0.0.tar.gz", hash = "sha256:fde0b595ca248bb8e2d76f020b465f3b107c9632e6a1d1705f17834c89dcadc0", size = 66945 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/3b/48e79f2cd6a61dbbd4807b4ed46cb564b4fd50a76166b1c4ea5c1d9e2371/pytest_cov-6.0.0-py3-none-any.whl", hash = "sha256:eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35", size = 22949 }, +] + +[[package]] +name = "pytest-env" +version = "1.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/31/27f28431a16b83cab7a636dce59cf397517807d247caa38ee67d65e71ef8/pytest_env-1.1.5.tar.gz", hash = "sha256:91209840aa0e43385073ac464a554ad2947cc2fd663a9debf88d03b01e0cc1cf", size = 8911 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/b8/87cfb16045c9d4092cfcf526135d73b88101aac83bc1adcf82dfb5fd3833/pytest_env-1.1.5-py3-none-any.whl", hash = "sha256:ce90cf8772878515c24b31cd97c7fa1f4481cd68d588419fd45f10ecaee6bc30", size = 6141 }, +] + +[[package]] +name = "pytest-mock" +version = "3.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/90/a955c3ab35ccd41ad4de556596fa86685bf4fc5ffcc62d22d856cfd4e29a/pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0", size = 32814 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/3b/b26f90f74e2986a82df6e7ac7e319b8ea7ccece1caec9f8ab6104dc70603/pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f", size = 9863 }, +] + +[[package]] +name = "pytest-watch" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama" }, + { name = "docopt" }, + { name = "pytest" }, + { name = "watchdog" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/36/47/ab65fc1d682befc318c439940f81a0de1026048479f732e84fe714cd69c0/pytest-watch-4.2.0.tar.gz", hash = "sha256:06136f03d5b361718b8d0d234042f7b2f203910d8568f63df2f866b547b3d4b9", size = 16340 } + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, +] + +[[package]] +name = "python-decouple" +version = "3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/97/373dcd5844ec0ea5893e13c39a2c67e7537987ad8de3842fe078db4582fa/python-decouple-3.8.tar.gz", hash = "sha256:ba6e2657d4f376ecc46f77a3a615e058d93ba5e465c01bbe57289bfb7cce680f", size = 9612 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/d4/9193206c4563ec771faf2ccf54815ca7918529fe81f6adb22ee6d0e06622/python_decouple-3.8-py3-none-any.whl", hash = "sha256:d0d45340815b25f4de59c974b855bb38d03151d81b037d9e3f463b0c9f8cbd66", size = 9947 }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, +] + +[[package]] +name = "questionary" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "prompt-toolkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/b8/d16eb579277f3de9e56e5ad25280fab52fc5774117fb70362e8c2e016559/questionary-2.1.0.tar.gz", hash = "sha256:6302cdd645b19667d8f6e6634774e9538bfcd1aad9be287e743d96cacaf95587", size = 26775 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ad/3f/11dd4cd4f39e05128bfd20138faea57bec56f9ffba6185d276e3107ba5b2/questionary-2.1.0-py3-none-any.whl", hash = "sha256:44174d237b68bc828e4878c763a9ad6790ee61990e0ae72927694ead57bab8ec", size = 36747 }, +] + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, +] + +[[package]] +name = "rpds-py" +version = "0.24.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/b3/52b213298a0ba7097c7ea96bee95e1947aa84cc816d48cebb539770cdf41/rpds_py-0.24.0.tar.gz", hash = "sha256:772cc1b2cd963e7e17e6cc55fe0371fb9c704d63e44cacec7b9b7f523b78919e", size = 26863 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/e0/1c55f4a3be5f1ca1a4fd1f3ff1504a1478c1ed48d84de24574c4fa87e921/rpds_py-0.24.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d8551e733626afec514b5d15befabea0dd70a343a9f23322860c4f16a9430205", size = 366945 }, + { url = "https://files.pythonhosted.org/packages/39/1b/a3501574fbf29118164314dbc800d568b8c1c7b3258b505360e8abb3902c/rpds_py-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0e374c0ce0ca82e5b67cd61fb964077d40ec177dd2c4eda67dba130de09085c7", size = 351935 }, + { url = "https://files.pythonhosted.org/packages/dc/47/77d3d71c55f6a374edde29f1aca0b2e547325ed00a9da820cabbc9497d2b/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d69d003296df4840bd445a5d15fa5b6ff6ac40496f956a221c4d1f6f7b4bc4d9", size = 390817 }, + { url = "https://files.pythonhosted.org/packages/4e/ec/1e336ee27484379e19c7f9cc170f4217c608aee406d3ae3a2e45336bff36/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8212ff58ac6dfde49946bea57474a386cca3f7706fc72c25b772b9ca4af6b79e", size = 401983 }, + { url = "https://files.pythonhosted.org/packages/07/f8/39b65cbc272c635eaea6d393c2ad1ccc81c39eca2db6723a0ca4b2108fce/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:528927e63a70b4d5f3f5ccc1fa988a35456eb5d15f804d276709c33fc2f19bda", size = 451719 }, + { url = "https://files.pythonhosted.org/packages/32/05/05c2b27dd9c30432f31738afed0300659cb9415db0ff7429b05dfb09bbde/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a824d2c7a703ba6daaca848f9c3d5cb93af0505be505de70e7e66829affd676e", size = 442546 }, + { url = "https://files.pythonhosted.org/packages/7d/e0/19383c8b5d509bd741532a47821c3e96acf4543d0832beba41b4434bcc49/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44d51febb7a114293ffd56c6cf4736cb31cd68c0fddd6aa303ed09ea5a48e029", size = 393695 }, + { url = "https://files.pythonhosted.org/packages/9d/15/39f14e96d94981d0275715ae8ea564772237f3fa89bc3c21e24de934f2c7/rpds_py-0.24.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3fab5f4a2c64a8fb64fc13b3d139848817a64d467dd6ed60dcdd6b479e7febc9", size = 427218 }, + { url = "https://files.pythonhosted.org/packages/22/b9/12da7124905a680f690da7a9de6f11de770b5e359f5649972f7181c8bf51/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9be4f99bee42ac107870c61dfdb294d912bf81c3c6d45538aad7aecab468b6b7", size = 568062 }, + { url = "https://files.pythonhosted.org/packages/88/17/75229017a2143d915f6f803721a6d721eca24f2659c5718a538afa276b4f/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:564c96b6076a98215af52f55efa90d8419cc2ef45d99e314fddefe816bc24f91", size = 596262 }, + { url = "https://files.pythonhosted.org/packages/aa/64/8e8a1d8bd1b6b638d6acb6d41ab2cec7f2067a5b8b4c9175703875159a7c/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:75a810b7664c17f24bf2ffd7f92416c00ec84b49bb68e6a0d93e542406336b56", size = 564306 }, + { url = "https://files.pythonhosted.org/packages/68/1c/a7eac8d8ed8cb234a9b1064647824c387753343c3fab6ed7c83481ed0be7/rpds_py-0.24.0-cp312-cp312-win32.whl", hash = "sha256:f6016bd950be4dcd047b7475fdf55fb1e1f59fc7403f387be0e8123e4a576d30", size = 224281 }, + { url = "https://files.pythonhosted.org/packages/bb/46/b8b5424d1d21f2f2f3f2d468660085318d4f74a8df8289e3dd6ad224d488/rpds_py-0.24.0-cp312-cp312-win_amd64.whl", hash = "sha256:998c01b8e71cf051c28f5d6f1187abbdf5cf45fc0efce5da6c06447cba997034", size = 239719 }, + { url = "https://files.pythonhosted.org/packages/9d/c3/3607abc770395bc6d5a00cb66385a5479fb8cd7416ddef90393b17ef4340/rpds_py-0.24.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:3d2d8e4508e15fc05b31285c4b00ddf2e0eb94259c2dc896771966a163122a0c", size = 367072 }, + { url = "https://files.pythonhosted.org/packages/d8/35/8c7ee0fe465793e3af3298dc5a9f3013bd63e7a69df04ccfded8293a4982/rpds_py-0.24.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f00c16e089282ad68a3820fd0c831c35d3194b7cdc31d6e469511d9bffc535c", size = 351919 }, + { url = "https://files.pythonhosted.org/packages/91/d3/7e1b972501eb5466b9aca46a9c31bcbbdc3ea5a076e9ab33f4438c1d069d/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:951cc481c0c395c4a08639a469d53b7d4afa252529a085418b82a6b43c45c240", size = 390360 }, + { url = "https://files.pythonhosted.org/packages/a2/a8/ccabb50d3c91c26ad01f9b09a6a3b03e4502ce51a33867c38446df9f896b/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c9ca89938dff18828a328af41ffdf3902405a19f4131c88e22e776a8e228c5a8", size = 400704 }, + { url = "https://files.pythonhosted.org/packages/53/ae/5fa5bf0f3bc6ce21b5ea88fc0ecd3a439e7cb09dd5f9ffb3dbe1b6894fc5/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed0ef550042a8dbcd657dfb284a8ee00f0ba269d3f2286b0493b15a5694f9fe8", size = 450839 }, + { url = "https://files.pythonhosted.org/packages/e3/ac/c4e18b36d9938247e2b54f6a03746f3183ca20e1edd7d3654796867f5100/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b2356688e5d958c4d5cb964af865bea84db29971d3e563fb78e46e20fe1848b", size = 441494 }, + { url = "https://files.pythonhosted.org/packages/bf/08/b543969c12a8f44db6c0f08ced009abf8f519191ca6985509e7c44102e3c/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78884d155fd15d9f64f5d6124b486f3d3f7fd7cd71a78e9670a0f6f6ca06fb2d", size = 393185 }, + { url = "https://files.pythonhosted.org/packages/da/7e/f6eb6a7042ce708f9dfc781832a86063cea8a125bbe451d663697b51944f/rpds_py-0.24.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6a4a535013aeeef13c5532f802708cecae8d66c282babb5cd916379b72110cf7", size = 426168 }, + { url = "https://files.pythonhosted.org/packages/38/b0/6cd2bb0509ac0b51af4bb138e145b7c4c902bb4b724d6fd143689d6e0383/rpds_py-0.24.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:84e0566f15cf4d769dade9b366b7b87c959be472c92dffb70462dd0844d7cbad", size = 567622 }, + { url = "https://files.pythonhosted.org/packages/64/b0/c401f4f077547d98e8b4c2ec6526a80e7cb04f519d416430ec1421ee9e0b/rpds_py-0.24.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:823e74ab6fbaa028ec89615ff6acb409e90ff45580c45920d4dfdddb069f2120", size = 595435 }, + { url = "https://files.pythonhosted.org/packages/9f/ec/7993b6e803294c87b61c85bd63e11142ccfb2373cf88a61ec602abcbf9d6/rpds_py-0.24.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c61a2cb0085c8783906b2f8b1f16a7e65777823c7f4d0a6aaffe26dc0d358dd9", size = 563762 }, + { url = "https://files.pythonhosted.org/packages/1f/29/4508003204cb2f461dc2b83dd85f8aa2b915bc98fe6046b9d50d4aa05401/rpds_py-0.24.0-cp313-cp313-win32.whl", hash = "sha256:60d9b630c8025b9458a9d114e3af579a2c54bd32df601c4581bd054e85258143", size = 223510 }, + { url = "https://files.pythonhosted.org/packages/f9/12/09e048d1814195e01f354155fb772fb0854bd3450b5f5a82224b3a319f0e/rpds_py-0.24.0-cp313-cp313-win_amd64.whl", hash = "sha256:6eea559077d29486c68218178ea946263b87f1c41ae7f996b1f30a983c476a5a", size = 239075 }, + { url = "https://files.pythonhosted.org/packages/d2/03/5027cde39bb2408d61e4dd0cf81f815949bb629932a6c8df1701d0257fc4/rpds_py-0.24.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:d09dc82af2d3c17e7dd17120b202a79b578d79f2b5424bda209d9966efeed114", size = 362974 }, + { url = "https://files.pythonhosted.org/packages/bf/10/24d374a2131b1ffafb783e436e770e42dfdb74b69a2cd25eba8c8b29d861/rpds_py-0.24.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5fc13b44de6419d1e7a7e592a4885b323fbc2f46e1f22151e3a8ed3b8b920405", size = 348730 }, + { url = "https://files.pythonhosted.org/packages/7a/d1/1ef88d0516d46cd8df12e5916966dbf716d5ec79b265eda56ba1b173398c/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c347a20d79cedc0a7bd51c4d4b7dbc613ca4e65a756b5c3e57ec84bd43505b47", size = 387627 }, + { url = "https://files.pythonhosted.org/packages/4e/35/07339051b8b901ecefd449ebf8e5522e92bcb95e1078818cbfd9db8e573c/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20f2712bd1cc26a3cc16c5a1bfee9ed1abc33d4cdf1aabd297fe0eb724df4272", size = 394094 }, + { url = "https://files.pythonhosted.org/packages/dc/62/ee89ece19e0ba322b08734e95441952062391065c157bbd4f8802316b4f1/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aad911555286884be1e427ef0dc0ba3929e6821cbeca2194b13dc415a462c7fd", size = 449639 }, + { url = "https://files.pythonhosted.org/packages/15/24/b30e9f9e71baa0b9dada3a4ab43d567c6b04a36d1cb531045f7a8a0a7439/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0aeb3329c1721c43c58cae274d7d2ca85c1690d89485d9c63a006cb79a85771a", size = 438584 }, + { url = "https://files.pythonhosted.org/packages/28/d9/49f7b8f3b4147db13961e19d5e30077cd0854ccc08487026d2cb2142aa4a/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a0f156e9509cee987283abd2296ec816225145a13ed0391df8f71bf1d789e2d", size = 391047 }, + { url = "https://files.pythonhosted.org/packages/49/b0/e66918d0972c33a259ba3cd7b7ff10ed8bd91dbcfcbec6367b21f026db75/rpds_py-0.24.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aa6800adc8204ce898c8a424303969b7aa6a5e4ad2789c13f8648739830323b7", size = 418085 }, + { url = "https://files.pythonhosted.org/packages/e1/6b/99ed7ea0a94c7ae5520a21be77a82306aac9e4e715d4435076ead07d05c6/rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a18fc371e900a21d7392517c6f60fe859e802547309e94313cd8181ad9db004d", size = 564498 }, + { url = "https://files.pythonhosted.org/packages/28/26/1cacfee6b800e6fb5f91acecc2e52f17dbf8b0796a7c984b4568b6d70e38/rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9168764133fd919f8dcca2ead66de0105f4ef5659cbb4fa044f7014bed9a1797", size = 590202 }, + { url = "https://files.pythonhosted.org/packages/a9/9e/57bd2f9fba04a37cef673f9a66b11ca8c43ccdd50d386c455cd4380fe461/rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5f6e3cec44ba05ee5cbdebe92d052f69b63ae792e7d05f1020ac5e964394080c", size = 561771 }, + { url = "https://files.pythonhosted.org/packages/9f/cf/b719120f375ab970d1c297dbf8de1e3c9edd26fe92c0ed7178dd94b45992/rpds_py-0.24.0-cp313-cp313t-win32.whl", hash = "sha256:8ebc7e65ca4b111d928b669713865f021b7773350eeac4a31d3e70144297baba", size = 221195 }, + { url = "https://files.pythonhosted.org/packages/2d/e5/22865285789f3412ad0c3d7ec4dc0a3e86483b794be8a5d9ed5a19390900/rpds_py-0.24.0-cp313-cp313t-win_amd64.whl", hash = "sha256:675269d407a257b8c00a6b58205b72eec8231656506c56fd429d924ca00bb350", size = 237354 }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.36" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet", marker = "(python_full_version < '3.13' and platform_machine == 'AMD64') or (python_full_version < '3.13' and platform_machine == 'WIN32') or (python_full_version < '3.13' and platform_machine == 'aarch64') or (python_full_version < '3.13' and platform_machine == 'amd64') or (python_full_version < '3.13' and platform_machine == 'ppc64le') or (python_full_version < '3.13' and platform_machine == 'win32') or (python_full_version < '3.13' and platform_machine == 'x86_64')" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/65/9cbc9c4c3287bed2499e05033e207473504dc4df999ce49385fb1f8b058a/sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5", size = 9574485 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/bf/005dc47f0e57556e14512d5542f3f183b94fde46e15ff1588ec58ca89555/SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4", size = 2092378 }, + { url = "https://files.pythonhosted.org/packages/94/65/f109d5720779a08e6e324ec89a744f5f92c48bd8005edc814bf72fbb24e5/SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855", size = 2082778 }, + { url = "https://files.pythonhosted.org/packages/60/f6/d9aa8c49c44f9b8c9b9dada1f12fa78df3d4c42aa2de437164b83ee1123c/SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53", size = 3232191 }, + { url = "https://files.pythonhosted.org/packages/8a/ab/81d4514527c068670cb1d7ab62a81a185df53a7c379bd2a5636e83d09ede/SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a", size = 3243044 }, + { url = "https://files.pythonhosted.org/packages/35/b4/f87c014ecf5167dc669199cafdb20a7358ff4b1d49ce3622cc48571f811c/SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686", size = 3178511 }, + { url = "https://files.pythonhosted.org/packages/ea/09/badfc9293bc3ccba6ede05e5f2b44a760aa47d84da1fc5a326e963e3d4d9/SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588", size = 3205147 }, + { url = "https://files.pythonhosted.org/packages/c8/60/70e681de02a13c4b27979b7b78da3058c49bacc9858c89ba672e030f03f2/SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e", size = 2062709 }, + { url = "https://files.pythonhosted.org/packages/b7/ed/f6cd9395e41bfe47dd253d74d2dfc3cab34980d4e20c8878cb1117306085/SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5", size = 2088433 }, + { url = "https://files.pythonhosted.org/packages/78/5c/236398ae3678b3237726819b484f15f5c038a9549da01703a771f05a00d6/SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef", size = 2087651 }, + { url = "https://files.pythonhosted.org/packages/a8/14/55c47420c0d23fb67a35af8be4719199b81c59f3084c28d131a7767b0b0b/SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8", size = 2078132 }, + { url = "https://files.pythonhosted.org/packages/3d/97/1e843b36abff8c4a7aa2e37f9bea364f90d021754c2de94d792c2d91405b/SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b", size = 3164559 }, + { url = "https://files.pythonhosted.org/packages/7b/c5/07f18a897b997f6d6b234fab2bf31dccf66d5d16a79fe329aefc95cd7461/SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2", size = 3177897 }, + { url = "https://files.pythonhosted.org/packages/b3/cd/e16f3cbefd82b5c40b33732da634ec67a5f33b587744c7ab41699789d492/SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf", size = 3111289 }, + { url = "https://files.pythonhosted.org/packages/15/85/5b8a3b0bc29c9928aa62b5c91fcc8335f57c1de0a6343873b5f372e3672b/SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c", size = 3139491 }, + { url = "https://files.pythonhosted.org/packages/a1/95/81babb6089938680dfe2cd3f88cd3fd39cccd1543b7cb603b21ad881bff1/SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436", size = 2060439 }, + { url = "https://files.pythonhosted.org/packages/c1/ce/5f7428df55660d6879d0522adc73a3364970b5ef33ec17fa125c5dbcac1d/SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88", size = 2084574 }, + { url = "https://files.pythonhosted.org/packages/b8/49/21633706dd6feb14cd3f7935fc00b60870ea057686035e1a99ae6d9d9d53/SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e", size = 1883787 }, +] + +[package.optional-dependencies] +asyncio = [ + { name = "greenlet" }, +] + +[[package]] +name = "sshtunnel" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "paramiko" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8d/ad/4c587adf79865be268ee0b6bd52cfaa7a75d827a23ced072dc5ab554b4af/sshtunnel-0.4.0.tar.gz", hash = "sha256:e7cb0ea774db81bf91844db22de72a40aae8f7b0f9bb9ba0f666d474ef6bf9fc", size = 62716 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/13/8476c4328dcadfe26f8bd7f3a1a03bf9ddb890a7e7b692f54a179bc525bf/sshtunnel-0.4.0-py2.py3-none-any.whl", hash = "sha256:98e54c26f726ab8bd42b47a3a21fca5c3e60f58956f0f70de2fb8ab0046d0606", size = 24729 }, +] + +[[package]] +name = "starlette" +version = "0.41.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1a/4c/9b5764bd22eec91c4039ef4c55334e9187085da2d8a2df7bd570869aae18/starlette-0.41.3.tar.gz", hash = "sha256:0e4ab3d16522a255be6b28260b938eae2482f98ce5cc934cb08dce8dc3ba5835", size = 2574159 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/00/2b325970b3060c7cecebab6d295afe763365822b1306a12eeab198f74323/starlette-0.41.3-py3-none-any.whl", hash = "sha256:44cedb2b7c77a9de33a8b74b2b90e9f50d11fcf25d8270ea525ad71a25374ff7", size = 73225 }, +] + +[[package]] +name = "structlog" +version = "24.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/78/a3/e811a94ac3853826805253c906faa99219b79951c7d58605e89c79e65768/structlog-24.4.0.tar.gz", hash = "sha256:b27bfecede327a6d2da5fbc96bd859f114ecc398a6389d664f62085ee7ae6fc4", size = 1348634 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/65/813fc133609ebcb1299be6a42e5aea99d6344afb35ccb43f67e7daaa3b92/structlog-24.4.0-py3-none-any.whl", hash = "sha256:597f61e80a91cc0749a9fd2a098ed76715a1c8a01f73e336b746504d1aad7610", size = 67180 }, +] + +[[package]] +name = "termcolor" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/37/72/88311445fd44c455c7d553e61f95412cf89054308a1aa2434ab835075fc5/termcolor-2.5.0.tar.gz", hash = "sha256:998d8d27da6d48442e8e1f016119076b690d962507531df4890fcd2db2ef8a6f", size = 13057 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/be/df630c387a0a054815d60be6a97eb4e8f17385d5d6fe660e1c02750062b4/termcolor-2.5.0-py3-none-any.whl", hash = "sha256:37b17b5fc1e604945c2642c872a3764b5d547a48009871aea3edd3afa180afb8", size = 7755 }, +] + +[[package]] +name = "tomlkit" +version = "0.13.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/09/a439bec5888f00a54b8b9f05fa94d7f901d6735ef4e55dcec9bc37b5d8fa/tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79", size = 192885 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/b6/a447b5e4ec71e13871be01ba81f5dfc9d0af7e473da256ff46bc0e24026f/tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde", size = 37955 }, +] + +[[package]] +name = "typing-extensions" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, +] + +[[package]] +name = "urllib3" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 }, +] + +[[package]] +name = "uvicorn" +version = "0.34.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4b/4d/938bd85e5bf2edeec766267a5015ad969730bb91e31b44021dfe8b22df6c/uvicorn-0.34.0.tar.gz", hash = "sha256:404051050cd7e905de2c9a7e61790943440b3416f49cb409f965d9dcd0fa73e9", size = 76568 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/14/33a3a1352cfa71812a3a21e8c9bfb83f60b0011f5e36f2b1399d51928209/uvicorn-0.34.0-py3-none-any.whl", hash = "sha256:023dc038422502fa28a09c7a30bf2b6991512da7dcdb8fd35fe57cfc154126f4", size = 62315 }, +] + +[[package]] +name = "watchdog" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, + { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 }, + { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 }, + { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, +] + +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, +] + +[[package]] +name = "wrapt" +version = "1.17.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799 }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821 }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919 }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721 }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899 }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222 }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707 }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685 }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567 }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672 }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865 }, + { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800 }, + { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824 }, + { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920 }, + { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690 }, + { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861 }, + { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174 }, + { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721 }, + { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763 }, + { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585 }, + { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676 }, + { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871 }, + { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312 }, + { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062 }, + { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155 }, + { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471 }, + { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208 }, + { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339 }, + { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232 }, + { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476 }, + { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377 }, + { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986 }, + { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750 }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, +] + +[[package]] +name = "yarl" +version = "1.19.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "multidict" }, + { name = "propcache" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/4d/8a8f57caccce49573e567744926f88c6ab3ca0b47a257806d1cf88584c5f/yarl-1.19.0.tar.gz", hash = "sha256:01e02bb80ae0dbed44273c304095295106e1d9470460e773268a27d11e594892", size = 184396 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/70/44ef8f69d61cb5123167a4dda87f6c739a833fbdb2ed52960b4e8409d65c/yarl-1.19.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:7b687c334da3ff8eab848c9620c47a253d005e78335e9ce0d6868ed7e8fd170b", size = 146855 }, + { url = "https://files.pythonhosted.org/packages/c3/94/38c14d6c8217cc818647689f2dd647b976ced8fea08d0ac84e3c8168252b/yarl-1.19.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b0fe766febcf523a2930b819c87bb92407ae1368662c1bc267234e79b20ff894", size = 97523 }, + { url = "https://files.pythonhosted.org/packages/35/a5/43a613586a6255105c4655a911c307ef3420e49e540d6ae2c5829863fb25/yarl-1.19.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:742ceffd3c7beeb2b20d47cdb92c513eef83c9ef88c46829f88d5b06be6734ee", size = 95540 }, + { url = "https://files.pythonhosted.org/packages/d4/60/ed26049f4a8b06ebfa6d5f3cb6a51b152fd57081aa818b6497474f65a631/yarl-1.19.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2af682a1e97437382ee0791eacbf540318bd487a942e068e7e0a6c571fadbbd3", size = 344386 }, + { url = "https://files.pythonhosted.org/packages/49/a6/b84899cab411f49af5986cfb44b514040788d81c8084f5811e6a7c0f1ce6/yarl-1.19.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:63702f1a098d0eaaea755e9c9d63172be1acb9e2d4aeb28b187092bcc9ca2d17", size = 338889 }, + { url = "https://files.pythonhosted.org/packages/cc/ce/0704f7166a781b1f81bdd45c4f49eadbae0230ebd35b9ec7cd7769d3a6ff/yarl-1.19.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3560dcba3c71ae7382975dc1e912ee76e50b4cd7c34b454ed620d55464f11876", size = 353107 }, + { url = "https://files.pythonhosted.org/packages/75/e5/0ecd6f2a9cc4264c16d8dfb0d3d71ba8d03cb58f3bcd42b1df4358331189/yarl-1.19.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:68972df6a0cc47c8abaf77525a76ee5c5f6ea9bbdb79b9565b3234ded3c5e675", size = 353128 }, + { url = "https://files.pythonhosted.org/packages/ad/c7/cd0fd1de581f1c2e8f996e704c9fd979e00106f18eebd91b0173cf1a13c6/yarl-1.19.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5684e7ff93ea74e47542232bd132f608df4d449f8968fde6b05aaf9e08a140f9", size = 349107 }, + { url = "https://files.pythonhosted.org/packages/e6/34/ba3e5a20bd1d6a09034fc7985aaf1309976f2a7a5aefd093c9e56f6e1e0c/yarl-1.19.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8182ad422bfacdebd4759ce3adc6055c0c79d4740aea1104e05652a81cd868c6", size = 335144 }, + { url = "https://files.pythonhosted.org/packages/1e/98/d9b7beb932fade015906efe0980aa7d522b8f93cf5ebf1082e74faa314b7/yarl-1.19.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:aee5b90a5a9b71ac57400a7bdd0feaa27c51e8f961decc8d412e720a004a1791", size = 360795 }, + { url = "https://files.pythonhosted.org/packages/9a/11/70b8770039cc54af5948970591517a1e1d093df3f04f328c655c9a0fefb7/yarl-1.19.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:8c0b2371858d5a814b08542d5d548adb03ff2d7ab32f23160e54e92250961a72", size = 360140 }, + { url = "https://files.pythonhosted.org/packages/d4/67/708e3e36fafc4d9d96b4eecc6c8b9f37c8ad50df8a16c7a1d5ba9df53050/yarl-1.19.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:cd430c2b7df4ae92498da09e9b12cad5bdbb140d22d138f9e507de1aa3edfea3", size = 364431 }, + { url = "https://files.pythonhosted.org/packages/c3/8b/937fbbcc895553a7e16fcd86ae4e0724c6ac9468237ad8e7c29cc3b1c9d9/yarl-1.19.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a93208282c0ccdf73065fd76c6c129bd428dba5ff65d338ae7d2ab27169861a0", size = 373832 }, + { url = "https://files.pythonhosted.org/packages/f8/ca/288ddc2230c9b6647fe907504f1119adb41252ac533eb564d3fc73511215/yarl-1.19.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:b8179280cdeb4c36eb18d6534a328f9d40da60d2b96ac4a295c5f93e2799e9d9", size = 378122 }, + { url = "https://files.pythonhosted.org/packages/4f/5a/79e1ef31d14968fbfc0ecec70a6683b574890d9c7550c376dd6d40de7754/yarl-1.19.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eda3c2b42dc0c389b7cfda2c4df81c12eeb552019e0de28bde8f913fc3d1fcf3", size = 375178 }, + { url = "https://files.pythonhosted.org/packages/95/38/9b0e56bf14026c3f550ad6425679f6d1a2f4821d70767f39d6f4c56a0820/yarl-1.19.0-cp312-cp312-win32.whl", hash = "sha256:57f3fed859af367b9ca316ecc05ce79ce327d6466342734305aa5cc380e4d8be", size = 86172 }, + { url = "https://files.pythonhosted.org/packages/b3/96/5c2f3987c4bb4e5cdebea3caf99a45946b13a9516f849c02222203d99860/yarl-1.19.0-cp312-cp312-win_amd64.whl", hash = "sha256:5507c1f7dd3d41251b67eecba331c8b2157cfd324849879bebf74676ce76aff7", size = 92617 }, + { url = "https://files.pythonhosted.org/packages/cd/a7/222144efa2f4a47363a5fee27d8a1d24851283b5a7f628890805fe7f7a66/yarl-1.19.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:59281b9ed27bc410e0793833bcbe7fc149739d56ffa071d1e0fe70536a4f7b61", size = 144789 }, + { url = "https://files.pythonhosted.org/packages/72/4f/3ee8de3f94baa33c0716260b0048b1fd5306f104b3efc6e1713693e7063e/yarl-1.19.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d27a6482ad5e05e8bafd47bf42866f8a1c0c3345abcb48d4511b3c29ecc197dc", size = 96685 }, + { url = "https://files.pythonhosted.org/packages/3e/7c/fbeebf875c1ededd872d6fefabd8a8526ef8aba6e9e8bcdf230d895d487b/yarl-1.19.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7a8e19fd5a6fdf19a91f2409665c7a089ffe7b9b5394ab33c0eec04cbecdd01f", size = 94307 }, + { url = "https://files.pythonhosted.org/packages/f3/ff/b7a9c1d7df37e594b43b7a8030e228ccd4ce361eeff24a92b17fe210e57d/yarl-1.19.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cda34ab19099c3a1685ad48fe45172536610c312b993310b5f1ca3eb83453b36", size = 342811 }, + { url = "https://files.pythonhosted.org/packages/79/e2/9e092876b2156c1d386e4864e85eba541ccabf2b9dcc47da64624bad0cc9/yarl-1.19.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7908a25d33f94852b479910f9cae6cdb9e2a509894e8d5f416c8342c0253c397", size = 336928 }, + { url = "https://files.pythonhosted.org/packages/71/24/648d99c134f2e14fc01ba790ad36ab56815e00069e60a12a4af893448b83/yarl-1.19.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e66c14d162bac94973e767b24de5d7e6c5153f7305a64ff4fcba701210bcd638", size = 351021 }, + { url = "https://files.pythonhosted.org/packages/0c/ee/7278d475784d407d1990a5939722e66a0fef057046fb5f1721f0a6eb156c/yarl-1.19.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c03607bf932aa4cfae371e2dc9ca8b76faf031f106dac6a6ff1458418140c165", size = 354454 }, + { url = "https://files.pythonhosted.org/packages/15/ae/242546114e052a7de21a75bd7d4860266439f90bbc21c5e4dd696866d91d/yarl-1.19.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9931343d1c1f4e77421687b6b94bbebd8a15a64ab8279adf6fbb047eff47e536", size = 347594 }, + { url = "https://files.pythonhosted.org/packages/46/2c/35f4347f76ea4c986e9c1f774b085f489b3a1bf1503c67a4dfc5d8e68e92/yarl-1.19.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:262087a8a0d73e1d169d45c2baf968126f93c97cf403e1af23a7d5455d52721f", size = 334113 }, + { url = "https://files.pythonhosted.org/packages/20/89/3086bc8ec8d7bd505531c51056452d7ae6af906d29c427374f1170ac1938/yarl-1.19.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:70f384921c24e703d249a6ccdabeb57dd6312b568b504c69e428a8dd3e8e68ca", size = 361037 }, + { url = "https://files.pythonhosted.org/packages/a1/5b/2c9765524a70d1c51922b41c91caa30c8094a416734349166e1a3d8de055/yarl-1.19.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:756b9ea5292a2c180d1fe782a377bc4159b3cfefaca7e41b5b0a00328ef62fa9", size = 361025 }, + { url = "https://files.pythonhosted.org/packages/ca/f8/c4a190bcc3cd98fb428d1dd31519e58004153dc7f2acd1236ecae54e3433/yarl-1.19.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cbeb9c145d534c240a63b6ecc8a8dd451faeb67b3dc61d729ec197bb93e29497", size = 364397 }, + { url = "https://files.pythonhosted.org/packages/6b/fb/f65b1347be8e12ac4e3e37a9bb880e6b9b604f252aaafd88e4879b1e9348/yarl-1.19.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:087ae8f8319848c18e0d114d0f56131a9c017f29200ab1413b0137ad7c83e2ae", size = 374065 }, + { url = "https://files.pythonhosted.org/packages/1c/c5/102cc3b9baad1a76f9127453ad08e0f5bc9c996c18128b1e28fe03817d6c/yarl-1.19.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362f5480ba527b6c26ff58cff1f229afe8b7fdd54ee5ffac2ab827c1a75fc71c", size = 381341 }, + { url = "https://files.pythonhosted.org/packages/f7/ce/f5dc0439320dfe59fadab8cdd24ac324be19cf6ae4736422c7e2a510ddf3/yarl-1.19.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f408d4b4315e814e5c3668094e33d885f13c7809cbe831cbdc5b1bb8c7a448f4", size = 376552 }, + { url = "https://files.pythonhosted.org/packages/a9/4a/4833a134c76af987eff3ce8cb71e42932234120e6be061eb2555061e8844/yarl-1.19.0-cp313-cp313-win32.whl", hash = "sha256:24e4c367ad69988a2283dd45ea88172561ca24b2326b9781e164eb46eea68345", size = 85878 }, + { url = "https://files.pythonhosted.org/packages/32/e9/59327daab3af8f79221638a8f0d11474d20f6a8fbc41e9da80c5ef69e688/yarl-1.19.0-cp313-cp313-win_amd64.whl", hash = "sha256:0110f91c57ab43d1538dfa92d61c45e33b84df9257bd08fcfcda90cce931cbc9", size = 92448 }, + { url = "https://files.pythonhosted.org/packages/a4/06/ae25a353e8f032322df6f30d6bb1fc329773ee48e1a80a2196ccb8d1206b/yarl-1.19.0-py3-none-any.whl", hash = "sha256:a727101eb27f66727576630d02985d8a065d09cd0b5fcbe38a5793f71b2a97ef", size = 45990 }, +] From 76d1fcd62ba66c19ddaab18a296fa58976991683 Mon Sep 17 00:00:00 2001 From: cdiener Date: Tue, 15 Apr 2025 22:29:37 +0200 Subject: [PATCH 2/9] feat: update project with changes from bettermarks licencing --- .github/workflows/pytest.yml | 52 + .gitignore | 3 - .python-version | 1 + k8s/Dockerfile.dev | 4 + pyproject.toml | 4 +- src/services/licensing/api/endpoints.py | 52 + src/services/licensing/api/v1/api.py | 11 +- .../licensing/api/v1/endpoints/admin.py | 22 +- .../licensing/api/v1/endpoints/hierarchy.py | 50 + .../licensing/api/v1/endpoints/member.py | 41 +- .../licensing/api/v1/endpoints/order.py | 34 +- .../licensing/api/v1/endpoints/shop.py | 0 .../licensing/api/v1/endpoints/status.py | 28 - src/services/licensing/api/v1/schema/base.py | 16 + .../licensing/api/v1/schema/entity.py | 2 +- .../licensing/api/v1/schema/hierarchy.py | 12 +- .../licensing/api/v1/schema/invoice.py | 22 +- .../licensing/api/v1/schema/license.py | 107 +- .../licensing/api/v1/schema/member.py | 4 +- src/services/licensing/api/v1/schema/seat.py | 23 - src/services/licensing/authorization.py | 1 + src/services/licensing/business/service.py | 48 +- src/services/licensing/custom_types.py | 1 + src/services/licensing/data/repository.py | 23 +- .../versions/6a346b801c88_initial.py | 1 + .../data/sqlalchemy/model/license.py | 23 +- .../licensing/data/sqlalchemy/repository.py | 192 +- .../licensing/data/sqlalchemy/unit_of_work.py | 35 +- src/services/licensing/data/unit_of_work.py | 1 + src/services/licensing/main.py | 42 +- src/services/licensing/pacts.py | 400 ++++ src/services/licensing/pagination.py | 19 +- src/services/licensing/settings.py | 21 +- src/services/licensing/tokens.py | 15 - src/services/licensing/utils.py | 14 +- tests/__init__.py | 0 tests/conftest.py | 161 ++ tests/integration/__init__.py | 0 tests/integration/conftest.py | 763 +++++++ tests/integration/test_admin.py | 360 ++++ .../test_admin_license_query_filter.py | 274 +++ tests/integration/test_event_log.py | 326 +++ tests/integration/test_hierarchy.py | 412 ++++ tests/integration/test_license.py | 51 + .../test_licenses_query_order_by.py | 77 + .../test_licenses_query_paginate.py | 143 ++ tests/integration/test_member.py | 206 ++ tests/integration/test_member_redeem.py | 537 +++++ tests/integration/test_order.py | 131 ++ tests/integration/test_status.py | 33 + tests/unit/__init__.py | 0 tests/unit/conftest.py | 51 + tests/unit/test_authorization.py | 160 ++ tests/unit/test_bettermarks_export.py | 28 + tests/unit/test_free_seats.py | 26 + tests/unit/test_hierarchies.py | 146 ++ tests/unit/test_order_by.py | 31 + tests/unit/test_pacts.py | 1757 +++++++++++++++++ tests/unit/test_service.py | 213 ++ 59 files changed, 6920 insertions(+), 290 deletions(-) create mode 100644 .github/workflows/pytest.yml create mode 100644 .python-version create mode 100644 src/services/licensing/api/endpoints.py create mode 100644 src/services/licensing/api/v1/endpoints/shop.py delete mode 100644 src/services/licensing/api/v1/endpoints/status.py create mode 100644 src/services/licensing/api/v1/schema/base.py delete mode 100644 src/services/licensing/api/v1/schema/seat.py create mode 100644 src/services/licensing/pacts.py create mode 100644 tests/__init__.py create mode 100644 tests/conftest.py create mode 100644 tests/integration/__init__.py create mode 100644 tests/integration/conftest.py create mode 100644 tests/integration/test_admin.py create mode 100644 tests/integration/test_admin_license_query_filter.py create mode 100644 tests/integration/test_event_log.py create mode 100644 tests/integration/test_hierarchy.py create mode 100644 tests/integration/test_license.py create mode 100644 tests/integration/test_licenses_query_order_by.py create mode 100644 tests/integration/test_licenses_query_paginate.py create mode 100644 tests/integration/test_member.py create mode 100644 tests/integration/test_member_redeem.py create mode 100644 tests/integration/test_order.py create mode 100644 tests/integration/test_status.py create mode 100644 tests/unit/__init__.py create mode 100644 tests/unit/conftest.py create mode 100644 tests/unit/test_authorization.py create mode 100644 tests/unit/test_bettermarks_export.py create mode 100644 tests/unit/test_free_seats.py create mode 100644 tests/unit/test_hierarchies.py create mode 100644 tests/unit/test_order_by.py create mode 100644 tests/unit/test_pacts.py create mode 100644 tests/unit/test_service.py diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml new file mode 100644 index 0000000..7e535c9 --- /dev/null +++ b/.github/workflows/pytest.yml @@ -0,0 +1,52 @@ +name: "Python tests" + +on: + pull_request: + branches: ["main"] + +env: + SEGMENT: loc00 + DB_HOST: localhost + DB_PORT: 5432 + DB_USER: postgres + DB_PASSWORD: postgres + DB_NAME: test_licensing + +jobs: + pytest: + runs-on: ubuntu-latest + + services: + postgres: + image: postgres:17 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: test_licensing + ports: ["5432:5432"] + options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + # Install a specific version of uv. + version: "0.6.3" + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version-file: ".python-version" + + - run: uv sync --dev --frozen + - run: uv run pytest --cov bm.ucm + + - uses: actions/upload-artifact@v4 + if: always() + with: + name: coverage + path: htmlcov diff --git a/.gitignore b/.gitignore index a89ed8b..d3a0d67 100644 --- a/.gitignore +++ b/.gitignore @@ -80,9 +80,6 @@ target/ profile_default/ ipython_config.py -# pyenv -.python-version - # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..f3fe474 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.12.9 diff --git a/k8s/Dockerfile.dev b/k8s/Dockerfile.dev index ce314d8..26ec658 100644 --- a/k8s/Dockerfile.dev +++ b/k8s/Dockerfile.dev @@ -30,6 +30,10 @@ RUN uv sync --extra export --frozen --no-editable --no-dev # INFO: final image only with virtual env FROM python:${python_version}-slim-bookworm ENV PYTHONUNBUFFERED 1 +ENV PATH="/venv/bin:$PATH" COPY --from=build /venv /venv +COPY ./alembic.ini . +COPY ./uvicorn_disable_logging.json . +COPY ./src/services/licensing/data/sqlalchemy/migrations ./src/services/licensing/data/sqlalchemy/migrations CMD ["uvicorn", "services.licensing.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "1", "--log-config", "uvicorn_disable_logging.json", "--timeout-keep-alive", "0"] diff --git a/pyproject.toml b/pyproject.toml index 505bf3d..35703eb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,9 @@ dependencies = [ [project.optional-dependencies] export = ["motor==3.6.0", "paramiko==3.5.0", "sshtunnel==0.4.0"] -tests = [ + +[dependency-groups] +dev = [ "black==25.1.0", "bump2version==1.0.1", "commitizen==4.1.0", diff --git a/src/services/licensing/api/endpoints.py b/src/services/licensing/api/endpoints.py new file mode 100644 index 0000000..4fab252 --- /dev/null +++ b/src/services/licensing/api/endpoints.py @@ -0,0 +1,52 @@ +import functools +import os + +from fastapi import APIRouter +from fastapi import status as http_status + +from services.licensing import settings +from services.licensing.business.service import LicensingService +from services.licensing.exceptions import HTTPException +from services.licensing.logging import LogLevel +from services.licensing import __version__ +from services.licensing.settings import transaction_manager, repository + +router = APIRouter() + + +@router.get("/livez", status_code=http_status.HTTP_200_OK) +async def get_livez() -> dict: + return { + "status": "OK", + } + + +@router.get("/status", status_code=http_status.HTTP_200_OK) +async def get_status() -> dict: + async with transaction_manager() as tm: + if await LicensingService(repository(tm.session)).is_db_alive(): + return {"status": "OK"} + raise HTTPException( + status_code=http_status.HTTP_500_INTERNAL_SERVER_ERROR, + message="Database not reachable", + ) + + +@router.get("/version", status_code=http_status.HTTP_200_OK) +async def get_version() -> dict: + return { + "debug": True if settings.log_level == LogLevel.DEBUG else False, + "version": __version__, + "git:sha": get_version_sha(), + "segment": settings.segment, + } + + +@functools.cache +def get_version_sha(): + if os.path.exists("./SHA.txt"): + with open("./SHA.txt", "r") as f: + sha = f.read().strip("\n") + else: + sha = "NO_GIT_SHA_FILE" + return sha diff --git a/src/services/licensing/api/v1/api.py b/src/services/licensing/api/v1/api.py index 272e76b..f50bdfb 100644 --- a/src/services/licensing/api/v1/api.py +++ b/src/services/licensing/api/v1/api.py @@ -1,18 +1,9 @@ from fastapi import APIRouter -from services.licensing.api.v1.endpoints import ( - admin, - hierarchy, - member, - status, - order, - shop, -) +from services.licensing.api.v1.endpoints import admin, hierarchy, member, order api_router = APIRouter() - api_router.include_router(admin.router, prefix="/admin", tags=["Admin"]) -api_router.include_router(status.router, prefix="/status", tags=["Status"]) api_router.include_router(member.router, prefix="/member", tags=["Member"]) api_router.include_router(hierarchy.router, prefix="/hierarchy", tags=["Hierarchy"]) api_router.include_router(order.router, prefix="/order", tags=["Order"]) diff --git a/src/services/licensing/api/v1/endpoints/admin.py b/src/services/licensing/api/v1/endpoints/admin.py index 6a2ba3d..d123621 100644 --- a/src/services/licensing/api/v1/endpoints/admin.py +++ b/src/services/licensing/api/v1/endpoints/admin.py @@ -104,7 +104,7 @@ async def create_license( message in case of an error """ async with transaction_manager() as tm: - license_ = await LicensingService(repository(tm.session)).create_license( + license_dict = await LicensingService(repository(tm.session)).create_license( hierarchy_provider_uri=data.hierarchy_provider_uri, manager_eid=data.manager_eid, product_eid=data.product_eid, @@ -123,10 +123,10 @@ async def create_license( logger.info( "Successfully created license", is_trial=False, - uuid=license_["uuid"], - product=license_["product_eid"], - owner_type=license_["owner_type"], - nof_seats=license_["nof_seats"], + uuid=license_dict["uuid"], + product=license_dict["product_eid"], + owner_type=license_dict["owner_type"], + nof_seats=license_dict["nof_seats"], ) except DuplicateEntryException: raise HTTPException( @@ -137,7 +137,7 @@ async def create_license( "already exists" ), ) - return LicenseCreatedSchema.parse_obj(license_) if license_ else None + return LicenseCreatedSchema.parse_obj(license_dict) @router.get("/licenses/{license_uuid}", status_code=http_status.HTTP_200_OK) @@ -180,3 +180,13 @@ async def update_license( payload["filter_restrictions"], **license_update.dict(exclude_unset=True) ) + + +@router.delete("/licenses/{license_uuid}", status_code=http_status.HTTP_200_OK) +async def delete_license( + license_uuid: str, + token_data: Tuple[str, Dict[str, Any]] = Depends(authorize_with_admin_token), +) -> None: + async with transaction_manager() as tm: + await LicensingService(repository(tm.session)).delete_license(license_uuid) + await tm.commit() diff --git a/src/services/licensing/api/v1/endpoints/hierarchy.py b/src/services/licensing/api/v1/endpoints/hierarchy.py index a5c294d..5506070 100644 --- a/src/services/licensing/api/v1/endpoints/hierarchy.py +++ b/src/services/licensing/api/v1/endpoints/hierarchy.py @@ -165,3 +165,53 @@ async def get_licenses_for_entity( payload["iss"], data.entity_type, data.entity_eid, hierarchies ) ] + + +@router.post("/licenses/{license_id}", status_code=http_status.HTTP_200_OK) +async def get_managed_license_by_uuid( + license_id: str, + _: HierarchiesSchema = Body(default_factory=HierarchiesSchema), + token_data: Tuple[str, Dict[str, Any]] = Depends(authorize_with_hierarchies_token), +) -> LicenseManagedSchema | None: + """ + Route for getting all the licenses in the hierarchy of a given user that they have + created. + + ### Example Bearer Token structure + ``` + { + "iss": "https://acc.bettermarks.com/ucm", + "exp": 1701789570.99798, + "sub": "12@EN_test", + "iat": 1701788970.99799, + "jti": "2b47ca46-28b9-4b8d-bd1c-a893acb9de29", + "hashes": { + "memberships": { + "alg": "SHA256", + "hash": "86f8b8313c183b3f9ee74b9c042ee440b894f690e9f6308de3da63fd4a6b8" + } + } + } + ``` + \f + :param license_id: License ID + :param _: a list of hierarchies of a user (is not used right now) + :param token_data: info gotten from hierarchies token + :return: a JSON object + """ + _, payload = token_data + + async with transaction_manager() as tm: + license_item = await LicensingService( + repository(tm.session) + ).get_managed_licenses_by_id( + license_id, + payload["iss"], + payload["sub"], + ) + item = ( + LicenseManagedSchema.parse_obj(asdict(license_item)) + if license_item + else None + ) + return item diff --git a/src/services/licensing/api/v1/endpoints/member.py b/src/services/licensing/api/v1/endpoints/member.py index 5133c09..e3d6383 100644 --- a/src/services/licensing/api/v1/endpoints/member.py +++ b/src/services/licensing/api/v1/endpoints/member.py @@ -86,7 +86,25 @@ async def get_accessible_products( ) -@router.post("/licenses/trial", status_code=http_status.HTTP_201_CREATED) +@router.post( + "/licenses/trial", + status_code=http_status.HTTP_201_CREATED, + responses={ + 409: { + "description": "Duplicate Error", + "content": { + "application/json": { + "example": { + "detail": ( + "Trial license creation failed:" + " A trial license for this entity already exists" + ), + }, + }, + }, + }, + }, +) async def create_trial_license( data: LicenseTrialSchema, token_data: Tuple[str, Dict[str, Any]] = Depends(authorize_with_memberships_token), @@ -112,6 +130,11 @@ async def create_trial_license( # Do the actual check, if the owner EID is part of the memberships. if Entity(type_=data.owner_type, eid=data.owner_eid) not in memberships: + logger.warn( + "license owner does not match any users membership", + owner_type=data.owner_type, + owner_eid=data.owner_eid, + ) raise HTTPException( status_code=http_status.HTTP_422_UNPROCESSABLE_ENTITY, message=( @@ -140,7 +163,7 @@ async def create_trial_license( "A trial license for this entity already exists" ), ) - license_ = await LicensingService(repository(tm.session)).create_license( + license_dict = await LicensingService(repository(tm.session)).create_license( hierarchy_provider_uri=payload["iss"], manager_eid=payload["sub"], product_eid=data.product_eid, @@ -158,10 +181,10 @@ async def create_trial_license( logger.info( "Successfully created license", is_trial=True, - uuid=license_["uuid"], - product=license_["product_eid"], - owner_type=license_["owner_type"], - nof_seats=license_["nof_seats"], + uuid=license_dict["uuid"], + product=license_dict["product_eid"], + owner_type=license_dict["owner_type"], + nof_seats=license_dict["nof_seats"], ) except DuplicateEntryException: raise HTTPException( @@ -171,7 +194,7 @@ async def create_trial_license( "A license with these properties already exists" ), ) - return license_ + return LicenseCreatedSchema.parse_obj(license_dict) @router.post("/licenses", status_code=http_status.HTTP_200_OK) @@ -187,9 +210,9 @@ async def get_available_licenses( ### Example Bearer Token structure ``` { - "iss": "https://your-domain.com/ucm", + "iss": "https://acc.bettermarks.com/ucm", "exp": 1701799583.393268, - "sub": "3@DE_tesyt", + "sub": "3@DE_bettermarks", "iat": 1701798983.393283, "jti": "77ab5b01-83a0-44f3-a086-d25162aae84e", "hashes": { diff --git a/src/services/licensing/api/v1/endpoints/order.py b/src/services/licensing/api/v1/endpoints/order.py index 150f139..92c9cbe 100644 --- a/src/services/licensing/api/v1/endpoints/order.py +++ b/src/services/licensing/api/v1/endpoints/order.py @@ -30,7 +30,7 @@ async def purchase_license( data = LicensePurchaseSchema(**payload["order"]) async with transaction_manager() as tm: - license_ = await LicensingService(repository(tm.session)).create_license( + license_dict = await LicensingService(repository(tm.session)).create_license( hierarchy_provider_uri=data.hierarchy_provider_uri, manager_eid=payload["sub"], product_eid=data.product_eid, @@ -49,10 +49,10 @@ async def purchase_license( logger.info( "Successfully created license", is_trial=False, - uuid=license_["uuid"], - product=license_["product_eid"], - owner_type=license_["owner_type"], - nof_seats=license_["nof_seats"], + uuid=license_dict["uuid"], + product=license_dict["product_eid"], + owner_type=license_dict["owner_type"], + nof_seats=license_dict["nof_seats"], ) except DuplicateEntryException: raise HTTPException( @@ -63,4 +63,26 @@ async def purchase_license( "already exists" ), ) - return license_ + return LicenseCreatedSchema.parse_obj(license_dict) + + +@router.put("/licenses/{license_id}", status_code=http_status.HTTP_200_OK) +async def upgrade_license( + license_id, + token_data: Tuple[str, Dict[str, Any]] = Depends(authorize_with_shop_token), +) -> LicenseCreatedSchema: + _, payload = token_data + data = LicensePurchaseSchema(**payload["order"]) + + async with transaction_manager() as tm: + license_dict = await LicensingService(repository(tm.session)).update_license( + license_uuid=license_id, nof_seats=data.nof_seats + ) + try: + await tm.commit() + except Exception: + raise HTTPException( + status_code=http_status.HTTP_400_BAD_REQUEST, + message=("License update failed"), + ) + return LicenseCreatedSchema.parse_obj(license_dict) diff --git a/src/services/licensing/api/v1/endpoints/shop.py b/src/services/licensing/api/v1/endpoints/shop.py new file mode 100644 index 0000000..e69de29 diff --git a/src/services/licensing/api/v1/endpoints/status.py b/src/services/licensing/api/v1/endpoints/status.py deleted file mode 100644 index ac1dbf8..0000000 --- a/src/services/licensing/api/v1/endpoints/status.py +++ /dev/null @@ -1,28 +0,0 @@ -import os -from typing import Dict - -from fastapi import APIRouter -from fastapi import status as http_status - -from services.licensing import settings -from services.licensing.logging import LogLevel -from services.licensing import __version__ - - -router = APIRouter() - - -@router.get("", status_code=http_status.HTTP_200_OK) -def get_status() -> Dict: - if os.path.exists("./SHA.txt"): - with open("./SHA.txt", "r") as f: - sha = f.read().strip("\n") - else: - sha = "NO_GIT_SHA_FILE" - - return { - "status": "OK", - "debug": True if settings.log_level == LogLevel.DEBUG else False, - "version": __version__, - "git:sha": sha, - } diff --git a/src/services/licensing/api/v1/schema/base.py b/src/services/licensing/api/v1/schema/base.py new file mode 100644 index 0000000..0fdb250 --- /dev/null +++ b/src/services/licensing/api/v1/schema/base.py @@ -0,0 +1,16 @@ +import datetime + +from pydantic import BaseModel + + +def iso_8601_with_timezone_format(d: datetime.datetime) -> str: + """ + our preferred datetime format used in the serializers: + sth. like 2019-11-11T00:52:43.349356+00:00 + """ + return str(d.replace(tzinfo=datetime.timezone.utc).isoformat()) + + +class BaseSchema(BaseModel): + class Config: + json_encoders = {datetime.datetime: iso_8601_with_timezone_format} diff --git a/src/services/licensing/api/v1/schema/entity.py b/src/services/licensing/api/v1/schema/entity.py index cb96d42..b49485b 100644 --- a/src/services/licensing/api/v1/schema/entity.py +++ b/src/services/licensing/api/v1/schema/entity.py @@ -1,4 +1,4 @@ -from pydantic import BaseModel as BaseSchema +from services.licensing.api.v1.schema.base import BaseSchema class EntitySchema(BaseSchema): diff --git a/src/services/licensing/api/v1/schema/hierarchy.py b/src/services/licensing/api/v1/schema/hierarchy.py index f2df14b..87e3836 100644 --- a/src/services/licensing/api/v1/schema/hierarchy.py +++ b/src/services/licensing/api/v1/schema/hierarchy.py @@ -1,18 +1,20 @@ -from typing import List +from typing import List, Dict, Any -from pydantic import BaseModel as BaseSchema, conlist +from pydantic import conlist + +from services.licensing.api.v1.schema.base import BaseSchema class HierarchiesSchema(BaseSchema): - hierarchies: List[str] = conlist(str, min_items=1) + hierarchies: List[Dict[str, Any]] = conlist(Dict, min_length=1) class Config: - schema_extra = { + json_schema_extra = { "examples": [ { "hierarchies": [ { - "eid": "NO_STATE@DE_test", + "eid": "NO_STATE@DE_bettermarks", "name": "NO_STATE", "type": "state", "level": 10, diff --git a/src/services/licensing/api/v1/schema/invoice.py b/src/services/licensing/api/v1/schema/invoice.py index 5a56661..6b9fc39 100644 --- a/src/services/licensing/api/v1/schema/invoice.py +++ b/src/services/licensing/api/v1/schema/invoice.py @@ -1,4 +1,6 @@ -from pydantic import BaseModel as BaseSchema +from typing import Optional + +from services.licensing.api.v1.schema.base import BaseSchema class InvoiceCreateSchema(BaseSchema): @@ -9,28 +11,28 @@ class InvoiceCreateSchema(BaseSchema): valid_to: str firstname: str lastname: str - phone: str | None + phone: Optional[str] = None email: str address_institution: str address_line2: str - address_line3: str | None + address_line3: Optional[str] = None address_street: str address_zip: str address_city: str address_country: str survey: str - vat_id: str | None - system: str | None - license_id: str | None + vat_id: Optional[str] = None + system: Optional[str] = None + license_id: Optional[str] = None class Config: from_attributes = True class InvoiceCreatedSchema(BaseSchema): - id: int | None + id: Optional[int] = None is_valid: bool page_number: int - confirmation_message: str | None - confirmation_type: str | None - validation_messages: dict | None + confirmation_message: Optional[str] = None + confirmation_type: Optional[str] = None + validation_messages: Optional[dict] = None diff --git a/src/services/licensing/api/v1/schema/license.py b/src/services/licensing/api/v1/schema/license.py index b09cc2e..7c9262d 100644 --- a/src/services/licensing/api/v1/schema/license.py +++ b/src/services/licensing/api/v1/schema/license.py @@ -1,27 +1,30 @@ import datetime -from typing import List +from typing import List, Optional +from typing_extensions import Annotated import uuid as uuid_module -from pydantic import BaseModel as BaseSchema, Field, constr, conint +from pydantic import Field, StringConstraints -from services.licensing.api.v1.schema.seat import SeatSchema +from services.licensing.api.v1.schema.base import BaseSchema # Custom types -IntWithInfinity = conint(strict=True, ge=-1) -PositiveInt = conint(strict=True, ge=0) +IntWithInfinity = Annotated[int, Field(strict=True, ge=-1)] +PositiveInt = Annotated[int, Field(strict=True, ge=0)] +NonEmptyStr = Annotated[str, StringConstraints(min_length=1, max_length=256)] -# Deseriealizer +# Deserializer class LicenseBaseDeserializerSchema(BaseSchema): owner_level: int owner_type: str = Field(min_length=1, max_length=256) - nof_seats: IntWithInfinity = Field( + nof_seats: Optional[IntWithInfinity] = Field( + default=None, description=( "The absolute number of seats for a license that can be occupied. `-1` " "means unlimited." ), ) - extra_seats: PositiveInt = Field( - default=0, + extra_seats: Optional[PositiveInt] = Field( + default=None, description=( "Extra seats make it possible to “overbook” the license seats of a license." ), @@ -31,51 +34,52 @@ class LicenseBaseDeserializerSchema(BaseSchema): class LicensePurchaseSchema(LicenseBaseDeserializerSchema): product_eid: str = Field(min_length=1, max_length=256) hierarchy_provider_uri: str = Field(min_length=1, max_length=256) - owner_eids: List[constr(min_length=1, max_length=256)] + owner_eids: List[NonEmptyStr] valid_from: datetime.date valid_to: datetime.date - order_id: str | None = Field(min_length=0, max_length=36) + order_id: Optional[str] = Field(default=None, min_length=0, max_length=36) class LicenseCreateSchema(LicensePurchaseSchema): """Admin license creation.""" manager_eid: str = Field(min_length=1, max_length=256) - notes: str | None = Field(max_length=4096) + notes: Optional[str] = Field(default=None, max_length=4096) class LicenseUpdateSchema(BaseSchema): """Admin license update.""" - manager_eid: str | None = Field(min_length=1, max_length=256) - nof_seats: IntWithInfinity | None = Field( + manager_eid: Optional[str] = Field(default=None, min_length=1, max_length=256) + nof_seats: Optional[IntWithInfinity] = Field( + default=None, description=( "The absolute number of seats for a license that can be occupied. `-1` " "means unlimited." ), ) - extra_seats: PositiveInt | None = Field( - default=0, + extra_seats: Optional[PositiveInt] = Field( + default=None, description=( "Extra seats make it possible to “overbook” the license seats of a license." ), ) - valid_from: datetime.date | None - valid_to: datetime.date | None + valid_from: Optional[datetime.date] = None + valid_to: Optional[datetime.date] = None class LicenseTrialSchema(LicenseBaseDeserializerSchema): product_eid: str = Field(min_length=1, max_length=256) owner_eid: str memberships: list - duration_weeks: int | None + duration_weeks: Optional[int] = None class Config: json_schema_extra = { "example": { "owner_type": "class", "owner_level": 1, - "owner_eid": "1@DE_test", + "owner_eid": "1@DE_bettermarks", "nof_seats": 50, "extra_seats": 0, "product_eid": "full_access", @@ -100,6 +104,7 @@ class LicenseBaseSerializerSchema(BaseSchema): "The absolute number of free seats for a license. `-1` means unlimited." ), ) + nof_occupied_seats: int extra_seats: PositiveInt = Field( default=0, description=( @@ -112,6 +117,22 @@ class LicenseBaseSerializerSchema(BaseSchema): class Config: from_attributes = True + json_schema_extra = { + "example": { + "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "product_eid": "string", + "owner_level": 0, + "owner_type": "string", + "nof_seats": 0, + "nof_free_seats": 0, + "nof_occupied_seats": 0, + "extra_seats": 0, + "is_trial": True, + "valid_from": "2024-02-13", + "valid_to": "2024-02-13", + "owner_eids": ["string"], + } + } class LicenseCreatedSchema(LicenseBaseSerializerSchema): @@ -120,19 +141,53 @@ class LicenseCreatedSchema(LicenseBaseSerializerSchema): class LicenseAvailableSchema(LicenseBaseSerializerSchema): owner_eids: List[str] - seats: List[SeatSchema] class LicenseManagedSchema(LicenseBaseSerializerSchema): owner_eids: List[str] - seats: List[SeatSchema] - released_seats: List[SeatSchema] created_at: datetime.datetime + class Config: + json_schema_extra = { + "example": { + "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "product_eid": "string", + "owner_level": 0, + "owner_type": "string", + "nof_seats": 0, + "nof_free_seats": 0, + "nof_occupied_seats": 0, + "extra_seats": 0, + "is_trial": True, + "valid_from": "2024-02-13", + "valid_to": "2024-02-13", + "owner_eids": ["string"], + "created_at": "2024-02-13T11:44:32.521Z", + } + } + class LicenseValidSchema(LicenseBaseSerializerSchema): owner_eids: List[str] + class Config: + json_schema_extra = { + "example": { + "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "product_eid": "string", + "owner_level": 0, + "owner_type": "string", + "nof_seats": 0, + "nof_free_seats": 0, + "nof_occupied_seats": 0, + "extra_seats": 0, + "is_trial": True, + "valid_from": "2024-02-13", + "valid_to": "2024-02-13", + "owner_eids": ["string"], + } + } + class LicenseActiveSchema(LicenseValidSchema): pass @@ -142,8 +197,6 @@ class LicenseCompleteSchema(LicenseBaseSerializerSchema): id: int manager_eid: str owner_eids: List[str] - notes: str | None - seats: List[SeatSchema] - released_seats: List[SeatSchema] + notes: Optional[str] = None created_at: datetime.datetime - updated_at: datetime.datetime | None + updated_at: Optional[datetime.datetime] = None diff --git a/src/services/licensing/api/v1/schema/member.py b/src/services/licensing/api/v1/schema/member.py index 25342dc..aef336a 100644 --- a/src/services/licensing/api/v1/schema/member.py +++ b/src/services/licensing/api/v1/schema/member.py @@ -5,12 +5,12 @@ class MembershipsSchema(BaseSchema): memberships: list class Config: - schema_extra = { + json_schema_extra = { "examples": [ { "memberships": [ { - "eid": "1@DE_test", + "eid": "1@DE_bettermarks", "name": "Cypress test class 11", "type": "class", "level": "1", diff --git a/src/services/licensing/api/v1/schema/seat.py b/src/services/licensing/api/v1/schema/seat.py deleted file mode 100644 index b026a4f..0000000 --- a/src/services/licensing/api/v1/schema/seat.py +++ /dev/null @@ -1,23 +0,0 @@ -import datetime - -from pydantic import BaseModel as BaseSchema, Field - -from services.licensing.custom_types import SeatStatus - - -class SeatBaseSchema(BaseSchema): - user_eid: str = Field(min_length=1, max_length=256) - - -class SeatCreateSchema(SeatBaseSchema): - pass - - -class SeatSchema(SeatBaseSchema): - occupied_at: datetime.datetime - last_accessed_at: datetime.datetime - is_occupied: bool - status: SeatStatus - - class Config: - from_attributes = True diff --git a/src/services/licensing/authorization.py b/src/services/licensing/authorization.py index 6975da6..01770fc 100644 --- a/src/services/licensing/authorization.py +++ b/src/services/licensing/authorization.py @@ -2,6 +2,7 @@ import json from functools import partial from typing import Any, Dict, List, Optional, Tuple + from fastapi import Depends, Request from fastapi import status as http_status from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials diff --git a/src/services/licensing/business/service.py b/src/services/licensing/business/service.py index 4bd6a3b..aa3b5b3 100644 --- a/src/services/licensing/business/service.py +++ b/src/services/licensing/business/service.py @@ -3,8 +3,6 @@ from functools import reduce from typing import List, Dict, Tuple -import pytz - from services.licensing.data.repository import LicensingRepository from services.licensing.custom_types import ( SeatStatus, @@ -27,10 +25,21 @@ class LicensingService: def __init__(self, licensing_repository: LicensingRepository): self.licensing_repository = licensing_repository + async def is_db_alive(self) -> bool: + return await self.licensing_repository.is_db_alive() + + async def delete_license(self, license_uuid: str) -> None: + await self.licensing_repository.delete_license(license_uuid) + async def create_license(self, **license_data) -> Dict[str, str]: data = license_data.copy() if "uuid" not in data: data["uuid"] = uuid_module.uuid4() + # extra_seats falls back to 0 if None + data["extra_seats"] = data["extra_seats"] or 0 + # nof_seats falls back to infinity (-1) if None + if data["nof_seats"] is None: + data["nof_seats"] = -1 await self.licensing_repository.create_license(**data) await self.licensing_repository.create_event_log( EventType.LICENSE_CREATED, data @@ -44,6 +53,7 @@ async def create_license(self, **license_data) -> Dict[str, str]: "owner_type": data["owner_type"], "nof_seats": data["nof_seats"], "nof_free_seats": data["nof_seats"], + "nof_occupied_seats": 0, "extra_seats": data["extra_seats"], "is_trial": data["is_trial"], } @@ -56,7 +66,7 @@ async def create_seat(self, **seat_data) -> None: ) async def update_license( - self, license_uuid: str, license_filter_restrictions=None, **data + self, license_uuid: str, license_filter_restrictions=None, **license_data ) -> License: """ License object update method. @@ -65,6 +75,13 @@ async def update_license( :param license_filter_restrictions: :returns the just update license (DTO object) """ + data = license_data.copy() + # extra_seats falls back to 0 if None + if "extra_seats" in data: + data["extra_seats"] = data["extra_seats"] or 0 + # nof_seats falls back to infinity (-1) if None + if "nof_seats" in data and data["nof_seats"] is None: + data["nof_seats"] = -1 l_ = await self.licensing_repository.update_license( license_uuid=license_uuid, license_filter_restrictions=license_filter_restrictions, @@ -120,13 +137,14 @@ async def get_accessible_products( :returns all the product EIDs gotten from the licenses :raises HTTPException: possible codes 400, 401, 409, 422 """ - now = datetime.datetime.now(tz=pytz.timezone("UTC")) + now = datetime.datetime.now(tz=datetime.timezone.utc) # 1. get all seats 'occupied' by the requesting user occupied_seats = await self.licensing_repository.get_occupied_seats(user_eid) # 1.b seats will also be updated ... occupied_seats_to_remove = [] + for seat in occupied_seats: # update 'last_accessed_at' in any case! seat.last_accessed_at = now @@ -136,6 +154,7 @@ async def get_accessible_products( occupied_seats_to_remove.append(seat) seat.status = SeatStatus.EXPIRED seat.is_occupied = False + continue # is the memberships disjoint with the owners? owners = { @@ -189,9 +208,9 @@ async def get_accessible_products( # distinct product eid are inserted. This gives a list of all licenses, # where all possible products are available ... licenses_to_occupy = reduce( - lambda acc, l_: acc + [l_] - if not acc or acc[-1].product_eid != l_.product_eid - else acc, + lambda acc, l_: ( + acc + [l_] if not acc or acc[-1].product_eid != l_.product_eid else acc + ), filtered_and_sorted_valid_licenses, [], ) @@ -206,6 +225,7 @@ async def get_accessible_products( ref_license=_l.id, uuid=_l.uuid, # uuid will only be used to build up events ) + # 6. merge the relevant products accessible_products = occupied_product_eids + [ l_.product_eid for l_ in licenses_to_occupy @@ -324,6 +344,16 @@ async def get_managed_licenses_paginated( page, page_size, order_by_fields, hierarchy_provider_uri, user_eid ) + async def get_managed_licenses_by_id( + self, + license_id: str, + hierarchy_provider_uri: str, + user_eid: str, + ) -> License: + return await self.licensing_repository.get_managed_licenses_by_id( + license_id, hierarchy_provider_uri, user_eid + ) + async def get_licenses_for_entities_paginated( self, page: int, @@ -331,7 +361,7 @@ async def get_licenses_for_entities_paginated( order_by_fields: List[Tuple[str, str]], hierarchy_provider_uri: str, entities: List[Entity], - ) -> List[License]: + ) -> Tuple[List[License], int]: return await self.licensing_repository.get_licenses_for_entities_paginated( page, page_size, order_by_fields, hierarchy_provider_uri, entities ) @@ -344,7 +374,7 @@ async def get_licenses_paginated( filter_restrictions: Dict[str, List[str]], allowed_filter_restrictions: List[str], **filters - ) -> List[License]: + ) -> Tuple[List[License], int]: return await self.licensing_repository.get_licenses_paginated( page, page_size, diff --git a/src/services/licensing/custom_types.py b/src/services/licensing/custom_types.py index abd818b..56dd748 100644 --- a/src/services/licensing/custom_types.py +++ b/src/services/licensing/custom_types.py @@ -67,6 +67,7 @@ class License: valid_to: datetime.date nof_seats: int nof_free_seats: int + nof_occupied_seats: int extra_seats: int is_trial: bool notes: str diff --git a/src/services/licensing/data/repository.py b/src/services/licensing/data/repository.py index 5bf63d0..777a616 100644 --- a/src/services/licensing/data/repository.py +++ b/src/services/licensing/data/repository.py @@ -44,6 +44,10 @@ class LicensingRepository(ABC): def __init__(self, session: Any): pass + @abstractmethod + async def is_db_alive(self) -> bool: + pass + @abstractmethod async def create_license(self, **license_data) -> None: pass @@ -52,6 +56,10 @@ async def create_license(self, **license_data) -> None: async def create_seat(self, **seat_data) -> None: pass + @abstractmethod + async def delete_license(self, license_uuid: str) -> None: + pass + @abstractmethod async def update_license( self, license_uuid: str, license_filter_restrictions: Any, **data @@ -70,7 +78,7 @@ async def get_licenses_for_entities_paginated( order_by_fields: List[Tuple[str, str]], hierarchy_provider_uri: str, entities: List[Entity], - ) -> List[License]: + ) -> Tuple[List[License], int]: pass @abstractmethod @@ -81,7 +89,16 @@ async def get_managed_licenses_paginated( order_by_fields: List[Tuple[str, str]], hierarchy_provider_uri: str, user_eid: str, - ) -> List[License]: + ) -> Tuple[List[License], int]: + pass + + @abstractmethod + async def get_managed_licenses_by_id( + self, + license_id: str, + hierarchy_provider_uri: str, + user_eid: str, + ) -> License: pass @abstractmethod @@ -93,7 +110,7 @@ async def get_licenses_paginated( filter_restrictions: Dict[str, List[str]], allowed_filter_restrictions: List[str], **filters - ) -> List[License]: + ) -> Tuple[List[License], int]: pass async def get_license( diff --git a/src/services/licensing/data/sqlalchemy/migrations/versions/6a346b801c88_initial.py b/src/services/licensing/data/sqlalchemy/migrations/versions/6a346b801c88_initial.py index ce09c85..6f3468d 100644 --- a/src/services/licensing/data/sqlalchemy/migrations/versions/6a346b801c88_initial.py +++ b/src/services/licensing/data/sqlalchemy/migrations/versions/6a346b801c88_initial.py @@ -5,6 +5,7 @@ Create Date: 2023-12-20 14:37:52.362677 """ + from alembic import op import sqlalchemy as sa from sqlalchemy.dialects import postgresql diff --git a/src/services/licensing/data/sqlalchemy/model/license.py b/src/services/licensing/data/sqlalchemy/model/license.py index a25c02b..c4a45ec 100644 --- a/src/services/licensing/data/sqlalchemy/model/license.py +++ b/src/services/licensing/data/sqlalchemy/model/license.py @@ -39,6 +39,7 @@ class LicenseModel(Model): lazy="raise", primaryjoin="and_(LicenseModel.id==SeatModel.ref_license, " "SeatModel.is_occupied==True)", + viewonly=True, ) # as 'released seats', we only list the 'unoccupied' seats, that means # all those seats, that are expired or no longer valid because the seat @@ -48,6 +49,7 @@ class LicenseModel(Model): lazy="raise", primaryjoin="and_(LicenseModel.id==SeatModel.ref_license, " "SeatModel.is_occupied==False)", + viewonly=True, ) __table_args__ = ( @@ -63,7 +65,7 @@ class LicenseModel(Model): ) def to_dto(self, with_seats=True) -> License: - seats = [s.to_dto() for s in self.seats] if with_seats else [] + nof_occupied_seats = len(self.seats) if with_seats else None return License( id=self.id, uuid=self.uuid, @@ -77,18 +79,19 @@ def to_dto(self, with_seats=True) -> License: valid_to=self.valid_to, nof_seats=self.nof_seats, # for API response we ignore extra-seats - nof_free_seats=nof_free_seats(self.nof_seats, 0, len(seats)) - if self.nof_seats != INFINITE_INT_JSON - else INFINITE_INT_JSON, + nof_free_seats=( + nof_free_seats(self.nof_seats, 0, nof_occupied_seats) + if self.nof_seats != INFINITE_INT_JSON + else INFINITE_INT_JSON + ), + nof_occupied_seats=nof_occupied_seats, extra_seats=self.extra_seats, is_trial=self.is_trial, notes=self.notes, - seats=seats, - released_seats=[s.to_dto() for s in self.released_seats] - if with_seats - else [] - if with_seats - else None, + seats=[s.to_dto() for s in self.seats] if with_seats else [], + released_seats=( + [s.to_dto() for s in self.released_seats] if with_seats else [] + ), created_at=self.created_at, updated_at=self.updated_at, ) diff --git a/src/services/licensing/data/sqlalchemy/repository.py b/src/services/licensing/data/sqlalchemy/repository.py index d1daa65..7fb9703 100644 --- a/src/services/licensing/data/sqlalchemy/repository.py +++ b/src/services/licensing/data/sqlalchemy/repository.py @@ -1,7 +1,6 @@ import datetime from typing import List, Tuple, Dict, Any -import pytz from fastapi import status as http_status from sqlalchemy import ( select, @@ -16,6 +15,7 @@ true, case, distinct, + delete, ) from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload @@ -31,16 +31,15 @@ ) from services.licensing.data.repository import LicensingRepository from services.licensing.data.sqlalchemy.model.event_log import EventLogModel -from services.licensing.data.sqlalchemy.model.seat import SeatModel from services.licensing.data.sqlalchemy.model.license import ( LicenseModel, LicensesUnnestedOwnersModel, ) +from services.licensing.data.sqlalchemy.model.seat import SeatModel from services.licensing.data.sqlalchemy.pagination import execute_paginated_query from services.licensing.exceptions import HTTPException -# todo: SPECIFIC (in docstring) def apply_filter_restrictions( query: Select, filter_restrictions: Dict[str, List[str]], @@ -51,11 +50,11 @@ def apply_filter_restrictions( (/licenses, /licenses{license_id}) using a 'filter_restrictions' dict in the 'admin token'. This is something like: - {"manager_eid": ["DE_test"]} + {"manager_eid": ["DE_bettermarks", "DE_test"]} This function interprets the 'filter restrictions' like so: A given license passes the function with 'True' in the example case above, if and only if - it has a 'manager_eid' like '*DE_test*'. + it has a 'manager_eid' like '*DE_bettermarks*' OR '*DE_test*'. :param query: the query to apply the filters to :param filter_restrictions: see above :param allowed_filter_restrictions: list of allowed filter restrictions to apply @@ -89,12 +88,24 @@ class LicensingRepositorySqlalchemyImpl(LicensingRepository): def __init__(self, session: AsyncSession): self.session = session + async def is_db_alive(self) -> bool: + try: + await self.session.execute(text("SELECT 1")) + return True + except Exception: + return False + async def create_license(self, **data) -> None: self.session.add(LicenseModel(**data)) async def create_seat(self, **data) -> None: self.session.add(SeatModel(**{k: v for k, v in data.items() if k != "uuid"})) + async def delete_license(self, license_uuid: str) -> None: + await self.session.execute( + delete(LicenseModel).where(LicenseModel.uuid == license_uuid) + ) + async def update_license( self, license_uuid: str, license_filter_restrictions: Any, **data ) -> License: @@ -147,7 +158,7 @@ async def get_managed_licenses_paginated( order_by_fields: List[Tuple[str, str]], hierarchy_provider_uri: str, user_eid: str, - ) -> List[License]: + ) -> Tuple[List[License], int]: items, total = await execute_paginated_query( self.session, select(LicenseModel) @@ -159,9 +170,11 @@ async def get_managed_licenses_paginated( .options(selectinload(LicenseModel.released_seats)) .order_by( *[ - getattr(LicenseModel, field).desc() - if dir_ == OrderByDirection.DESC - else getattr(LicenseModel, field) + ( + getattr(LicenseModel, field).desc() + if dir_ == OrderByDirection.DESC + else getattr(LicenseModel, field) + ) for field, dir_ in order_by_fields ] ), @@ -170,6 +183,28 @@ async def get_managed_licenses_paginated( ) return [l_.to_dto() for l_ in items], total + async def get_managed_licenses_by_id( + self, + license_id: str, + hierarchy_provider_uri: str, + user_eid: str, + ) -> License: + license_item_stmt = ( + select(LicenseModel) + .where( + LicenseModel.uuid == license_id, + LicenseModel.hierarchy_provider_uri == hierarchy_provider_uri, + LicenseModel.manager_eid == user_eid, + ) + .options( + selectinload(LicenseModel.seats), + selectinload(LicenseModel.released_seats), + ) + ) + result = await self.session.execute(license_item_stmt) + license_item = result.scalar() + return license_item.to_dto() if license_item else None + async def get_licenses_for_entities_paginated( self, page: int, @@ -177,7 +212,7 @@ async def get_licenses_for_entities_paginated( order_by_fields: List[Tuple[str, str]], hierarchy_provider_uri: str, entities: List[Entity], - ) -> List[License]: + ) -> Tuple[List[License], int]: # subquery for all license ids with owners unnested to rows ... subquery_licenses = ( select(LicensesUnnestedOwnersModel.id) @@ -199,9 +234,11 @@ async def get_licenses_for_entities_paginated( .options(selectinload(LicenseModel.released_seats)) .order_by( *[ - getattr(LicenseModel, field).desc() - if dir_ == OrderByDirection.DESC - else getattr(LicenseModel, field) + ( + getattr(LicenseModel, field).desc() + if dir_ == OrderByDirection.DESC + else getattr(LicenseModel, field) + ) for field, dir_ in order_by_fields ] ) @@ -223,13 +260,13 @@ async def get_licenses_paginated( filter_restrictions: Dict[str, List[str]], allowed_filter_restrictions: List[str], **filters, - ) -> List[License]: + ) -> Tuple[List[License], int]: """ helper: gets all licenses, paginated, with order by and filters :returns: a tuple with (a list of License DTO objects, the total number of licenses) """ - date_now = datetime.datetime.now(tz=pytz.timezone("UTC")) + date_now = datetime.datetime.now(tz=datetime.timezone.utc) filter_is_valid = filters.get("is_valid") stmt = ( select(LicenseModel) @@ -238,52 +275,80 @@ async def get_licenses_paginated( LicensesUnnestedOwnersModel.id == LicenseModel.id, ) .where( - LicenseModel.product_eid.contains(filters["product_eid"]) - if filters.get("product_eid") - else text(""), - LicenseModel.owner_type == filters["owner_type"] - if filters.get("owner_type") - else text(""), - LicenseModel.owner_level == filters["owner_level"] - if filters.get("owner_level") - else text(""), - LicensesUnnestedOwnersModel.owner_eid.contains(filters["owner_eid"]) - if filters.get("owner_eid") - else text(""), - LicenseModel.manager_eid.contains(filters["manager_eid"]) - if filters.get("manager_eid") - else text(""), - LicenseModel.valid_from >= filters["valid_from"] - if filters.get("valid_from") - else text(""), - LicenseModel.valid_to <= filters["valid_to"] - if filters.get("valid_to") - else text(""), - LicenseModel.is_trial.is_(filters["is_trial"]) - if filters.get("is_trial") is not None - else text(""), - LicenseModel.created_at >= filters["created_at"] - if filters.get("created_at") - else text(""), + ( + LicenseModel.product_eid.contains(filters["product_eid"]) + if filters.get("product_eid") + else text("") + ), + ( + LicenseModel.owner_type == filters["owner_type"] + if filters.get("owner_type") + else text("") + ), + ( + LicenseModel.owner_level == filters["owner_level"] + if filters.get("owner_level") + else text("") + ), + ( + LicensesUnnestedOwnersModel.owner_eid.contains(filters["owner_eid"]) + if filters.get("owner_eid") + else text("") + ), + ( + LicenseModel.manager_eid.contains(filters["manager_eid"]) + if filters.get("manager_eid") + else text("") + ), + ( + LicenseModel.valid_from >= filters["valid_from"] + if filters.get("valid_from") + else text("") + ), + ( + LicenseModel.valid_to <= filters["valid_to"] + if filters.get("valid_to") + else text("") + ), + ( + LicenseModel.is_trial.is_(filters["is_trial"]) + if filters.get("is_trial") is not None + else text("") + ), + ( + LicenseModel.created_at >= filters["created_at"] + if filters.get("created_at") + else text("") + ), # filter by `is_valid` - LicenseModel.valid_from <= date_now - if filter_is_valid is True - else LicenseModel.valid_from > date_now - if filter_is_valid is False - else text(""), - LicenseModel.valid_to >= date_now - if filter_is_valid is True - else LicenseModel.valid_to < date_now - if filter_is_valid is False - else text(""), + ( + LicenseModel.valid_from <= date_now + if filter_is_valid is True + else ( + LicenseModel.valid_from > date_now + if filter_is_valid is False + else text("") + ) + ), + ( + LicenseModel.valid_to >= date_now + if filter_is_valid is True + else ( + LicenseModel.valid_to < date_now + if filter_is_valid is False + else text("") + ) + ), ) .options(selectinload(LicenseModel.seats)) .options(selectinload(LicenseModel.released_seats)) .order_by( *[ - getattr(LicenseModel, field).desc() - if dir == OrderByDirection.DESC - else getattr(LicenseModel, field) + ( + getattr(LicenseModel, field).desc() + if dir == OrderByDirection.DESC + else getattr(LicenseModel, field) + ) for field, dir in order_by_fields ] ) @@ -292,6 +357,13 @@ async def get_licenses_paginated( # special aggregation filters: # if filters.get("redeemed_seats"): + # Filter uses the following logic in `having` clause: + # - number of redeemed seats * 1/10000000000 >= 80% (or something) + # [if nof_seats is infinity (NEVER TRUE)] + # - number of redeemed seats * 10000000000 >= 80% (or something) + # [if nof_seats is 0 (ALWAYS TRUE)] + # - number of redeemed seats * 1.0/nof_seats >= 80% (or something) + # [true if, redeemed seats / nof_seats >= 0.8 etc. (The usual case)] stmt = ( stmt.join( SeatModel, @@ -308,9 +380,10 @@ async def get_licenses_paginated( # multiple owner eids per license. Otherwise, the count # would be multiplied by the number of owner eids! * func.count(distinct(SeatModel.id)) - / case( - (LicenseModel.nof_seats == -1, 10000000000), - else_=LicenseModel.nof_seats, + * case( + (LicenseModel.nof_seats <= -1, 1.0 / 10000000000), + (LicenseModel.nof_seats <= 0, 10000000000), + else_=1.0 / LicenseModel.nof_seats, ) >= filters["redeemed_seats"] / 100.0 ) @@ -344,7 +417,6 @@ async def get_license( .options(selectinload(LicenseModel.seats)) .options(selectinload(LicenseModel.released_seats)) ) - license_ = ( ( await self.session.execute( @@ -433,7 +505,7 @@ async def create_event_log( self.session.add( EventLogModel( event_type=type_.value, - timestamp=datetime.datetime.now(tz=pytz.timezone("UTC")), + timestamp=datetime.datetime.now(tz=datetime.timezone.utc), event_version=version, event_payload=payload, is_exported=is_exported, diff --git a/src/services/licensing/data/sqlalchemy/unit_of_work.py b/src/services/licensing/data/sqlalchemy/unit_of_work.py index 1aee8a1..4d9765e 100644 --- a/src/services/licensing/data/sqlalchemy/unit_of_work.py +++ b/src/services/licensing/data/sqlalchemy/unit_of_work.py @@ -1,12 +1,15 @@ -from sqlalchemy.exc import IntegrityError -from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession -from sqlalchemy.orm import sessionmaker +import urllib +from functools import lru_cache +from sqlalchemy.exc import IntegrityError +from sqlalchemy.ext.asyncio import ( + create_async_engine, + AsyncSession, + AsyncEngine, + async_sessionmaker, +) from services.licensing.exceptions import DuplicateEntryException from services.licensing.data.unit_of_work import TransactionManager - - -import urllib from services.licensing.json import custom_json_dumps @@ -21,16 +24,22 @@ def postgres_dsn( ) +@lru_cache(maxsize=None) +def get_async_engine(db_uri: str) -> AsyncEngine: + """Cached engine creation ...""" + return create_async_engine( + db_uri, + echo=False, + json_serializer=custom_json_dumps, + connect_args={"server_settings": {"jit": "off"}}, + ) + + class TransactionManagerImpl(TransactionManager): def __init__(self, db_uri: str, implicit_commit: bool = False): self._implicit_commit = implicit_commit - self._engine = create_async_engine( - db_uri, - echo=False, - json_serializer=custom_json_dumps, - connect_args={"server_settings": {"jit": "off"}}, - ) - self._sessionmaker = sessionmaker( + self._engine = get_async_engine(db_uri) + self._sessionmaker = async_sessionmaker( bind=self._engine, expire_on_commit=False, class_=AsyncSession ) self._session = None diff --git a/src/services/licensing/data/unit_of_work.py b/src/services/licensing/data/unit_of_work.py index 2a49a1c..34f4207 100644 --- a/src/services/licensing/data/unit_of_work.py +++ b/src/services/licensing/data/unit_of_work.py @@ -14,6 +14,7 @@ class "TransactionManager". Concrete implementations of that interface José Haro Peralta, Microservice APIs, Manning Publications, 2023, ISBN: 9781617298417 """ + from abc import ABC, abstractmethod diff --git a/src/services/licensing/main.py b/src/services/licensing/main.py index 09fe648..a6ad8c4 100644 --- a/src/services/licensing/main.py +++ b/src/services/licensing/main.py @@ -1,4 +1,7 @@ import time +from contextlib import asynccontextmanager +from typing import AsyncGenerator + import structlog from asgi_correlation_id import CorrelationIdMiddleware @@ -12,6 +15,7 @@ from uvicorn.protocols.utils import get_path_with_query_string from services.licensing import settings +from services.licensing.api import endpoints from services.licensing.exceptions import HTTPException from services.licensing import __version__ as version from services.licensing.logging import setup_logging, LogLevel @@ -24,23 +28,29 @@ exception_logger = structlog.stdlib.get_logger("api.exception") +@asynccontextmanager +async def lifespan(_: FastAPI) -> AsyncGenerator[None, None]: + yield + + app = FastAPI( - title="Open Adaptive Licensing", + title="Licensing Service", version=version, openapi_url="/v1/openapi.json", debug=True if settings.log_level == LogLevel.DEBUG else False, - description="An Open Adaptive Licensing service", + description="A generic license managing application", + lifespan=lifespan, ) + add_pagination(app) # important! add pagination -# todo: SPECIFICS app.add_middleware( CORSMiddleware, allow_credentials=True, allow_headers=["*"], allow_methods=["*"], - allow_origin_regex=r"https://apps.*\.your-domain\.(loc|com)", + allow_origin_regex=r"https://apps.*\.bettermarks\.(loc|com)", ) @@ -140,7 +150,7 @@ async def logging_middleware(request: Request, call_next) -> Response: "SECRET_TOKEN": settings.apm_secret_token, "SERVER_URL": settings.apm_url, "ENVIRONMENT": settings.segment, - "TRANSACTIONS_IGNORE_PATTERNS": ["^OPTIONS", "/v1/status"], + "TRANSACTIONS_IGNORE_PATTERNS": ["^OPTIONS", "/status"], "ENABLED": settings.apm_enabled, "SERVICE_VERSION": version, "TRANSACTION_SAMPLE_RATE": settings.apm_transaction_sample_rate, @@ -149,16 +159,18 @@ async def logging_middleware(request: Request, call_next) -> Response: ) app.add_middleware(ElasticAPM, client=apm) +ROUTE_PREFIX = "/v1" +app.include_router(api_router, prefix=ROUTE_PREFIX) +app.include_router(endpoints.router, tags=["Dev"]) -@app.on_event("startup") -async def startup(): - pass - +try: + from services.licensing.pacts import pact_router -@app.on_event("shutdown") -async def shutdown(): + app.include_router( + pact_router, + include_in_schema=False, + prefix=f"/pact{ROUTE_PREFIX}", + tags=["Pact"], + ) +except ImportError: pass - - -ROUTE_PREFIX = "/v1" -app.include_router(api_router, prefix=ROUTE_PREFIX) diff --git a/src/services/licensing/pacts.py b/src/services/licensing/pacts.py new file mode 100644 index 0000000..aa40462 --- /dev/null +++ b/src/services/licensing/pacts.py @@ -0,0 +1,400 @@ +import functools +import re +from typing import Any, Annotated, Union + +from fastapi import APIRouter, Header, Response +from fastapi.openapi.utils import get_openapi +from jsonschema import validate, ValidationError + + +def primitive_type_example(schema_type: str, schema_format: str | None = None) -> Any: + """Defaults for primitive types.""" + match schema_type: + case "string": + match schema_format: + case "uuid": + example = "3fa85f64-5717-4562-b3fc-2c963f66afa6" + case "date": + example = "2023-12-31" + case "date-time": + example = "2023-12-31 23:59:59" + case "email": + example = "user@example.com" + case "hostname": + example = "example.com" + case "ipv4": + example = "127.0.0.1" + case "ipv6": + example = "0000:0000:0000:0000:0000:0000:0000:0000" + case _: + example = "string" + case "integer": + example = 0 + case "number": + if schema_format == "float": + example = 0 + else: + example = 0 + case "boolean": + example = True + case "object": + example = {} + case _: + example = None + return example + + +def recursive_schema_parse( + schema_name: str, schema_dict: dict, schemas_map: dict, parsed_schemas: dict +) -> tuple[str, Any]: + """ + Recursively parse OpenAPI schema. + :param schema_name: (str) name of a schema being parsed by calling this function + :param schema_dict: (dict) content of schema being parsed by calling this function + :param schemas_map: (dict) contains all schemas from an openapi specification + :param parsed_schemas: (set) contains names of all schemas parsed by recursive + parser and used to avoid circular references + """ + schema_format = schema_dict.get("format") + # extract first type in `anyOf` in `type` field + if any_of := schema_dict.pop("anyOf", {}): + if not (len(any_of) == 2 and any_of[1]["type"] == "null"): + raise ValueError(f"unexpected anyOf in schema: {any_of}") + schema_dict["type"] = any_of[0]["type"] + match schema_type := schema_dict.get("type"): + case "object": + example = {} + if props := schema_dict.get("properties"): + for prop_name, prop_dict in props.items(): + # (!!!) recursion enter + result_prop_name, result_example = recursive_schema_parse( + prop_name, prop_dict, schemas_map, parsed_schemas + ) + example[result_prop_name] = result_example + case "array": + if items := schema_dict.get("items"): + if item_ref := items.get("$ref"): + # (!!!) sub-recursion to process reference + sub_schema_name = item_ref.split("/")[-1] + if sub_schema_name in parsed_schemas: + # this approach is used in `fastapi` to solve infinite recursion + # for self-related schemas + sub_example = parsed_schemas[sub_schema_name] + else: + parsed_schemas[sub_schema_name] = "string" + sub_schema_dict = schemas_map[sub_schema_name] + _, sub_example = recursive_schema_parse( + sub_schema_name, + sub_schema_dict, + schemas_map, + parsed_schemas, + ) + parsed_schemas[sub_schema_name] = sub_example + example = [sub_example] + elif item_type := items.get("type"): + example = item_type + else: + example = [] + elif items is None: + raise ValueError("unprocessed array due to lack of `items` property") + else: + example = [] + case "string": + example = primitive_type_example(schema_type, schema_format) + case "boolean": + example = primitive_type_example(schema_type, schema_format) + case "integer": + example = primitive_type_example(schema_type, schema_format) + case "number": + example = primitive_type_example(schema_type, schema_format) + case _: + if "enum" in schema_dict: + example = schema_dict["enum"][0] + elif "$ref" in schema_dict: + item_ref = schema_dict["$ref"] + # (!!!) sub-recursion to process reference + sub_schema_name = item_ref.split("/")[-1] + if sub_schema_name in parsed_schemas: + # this approach is used in `fastapi` to solve infinite recursion + # for self-related schemas + sub_example = parsed_schemas[sub_schema_name] + else: + parsed_schemas[sub_schema_name] = "string" + sub_schema_dict = schemas_map[sub_schema_name] + _, sub_example = recursive_schema_parse( + sub_schema_name, sub_schema_dict, schemas_map, parsed_schemas + ) + parsed_schemas[sub_schema_name] = sub_example + example = sub_example + else: + raise ValueError(f"unprocessed type [{schema_type}]") + return schema_name, example + + +def build_regex_paths_map( + openapi_spec: dict, regex_placeholder: str = "[a-zA-Z0-9-_]+" +) -> dict[str, dict]: + """ + Builds a mapping of paths (from `openapi_spec.paths`) to response + specifications. Paths are converted into regexps, suitable for `re.match`, then + they are used as keys of result dictionary, values are those path response + specifications. + Example of path conversion: /v1/some/path/{value} -> ^/v1/some/path/[a-z-A-Z0-9-_]$ + """ + regex_paths_map = {} + for schema_route, spec in openapi_spec.get("paths", dict()).items(): + key_route = f"^{schema_route}$" + for param in re.findall(r"{[a-zA-Z0-9_]+}", schema_route): + key_route = key_route.replace(param, regex_placeholder) + # fill mapping with {...key_route: spec...} + regex_paths_map[key_route] = spec + return regex_paths_map + + +def extract_schema_name(response_schema: dict) -> str: + """ + Extract schema name of `$ref` (i.e. the last_part of a $/schema/path/last_part). + """ + try: + if "anyOf" in response_schema: + schema = response_schema["anyOf"][0] + else: + schema = response_schema + return schema["$ref"].split("/")[-1] + except KeyError: + raise ValueError("no $ref in a provided response_schema") + + +def extract_schema(openapi_spec: dict, response_schema: dict) -> tuple[dict, str, dict]: + """ + - Extract schema name of `$ref` (i.e. the last_part of a $/schema/path/last_part). + - Extract schema dictionary from openapi specification component schemas list. + :returns: Tuple of schemas_map, schema_name, schema_dict + """ + schema_name = extract_schema_name(response_schema) + + try: + schemas_map = openapi_spec["components"]["schemas"] + schema_dict = schemas_map[schema_name] + except KeyError: + raise ValueError( + f"schemas are not defined in openapi spec or " + f"schema `{schema_name}` is not presented there" + ) + return schemas_map, schema_name, schema_dict + + +def validate_request_body( + openapi_spec: dict, + request_method: str, + request_body: dict | None, + preferred_spec: dict, +): + """...""" + if request_method in {"post", "put", "patch"} and request_body: + if body_schema := preferred_spec[request_method].get("requestBody"): + response_content_json = body_schema["content"]["application/json"] + if response_schema := response_content_json.get("schema"): + _, _, schema_dict = extract_schema(openapi_spec, response_schema) + try: + validate(request_body, schema_dict) + except ValidationError: + raise ValueError( + "provided request body is not matching an openapi specification" + ) + else: + raise ValueError("request body is not expected in this request") + + +async def example_openapi_response( + openapi_spec: dict, + request_path: str, + request_method: str, + request_body: dict | None, + response_status: int | str, + response_example: str | None = None, +) -> tuple[int, dict]: + """ + Function returns an example response from the given `openapi_spec`, based on + `request_path`, `request_method` and desired `response_status`. + + :param openapi_spec: (dict) open api specification + :param request_path: (str) request path to search in a specification + :param request_method: (str) request method to search in a specification + :param request_body: (dict) request body to check for validity + :param response_status: (optional int) desired response status + :param response_example: (optional string) extract name example from `examples` key + """ + request_method = request_method.lower() + response_status = str(response_status) + + # generate {..., "re_path" -> path_spec{}, ...} + regex_paths_map = build_regex_paths_map(openapi_spec) + + # selecting preferred response + preferred_spec = None + for regex, spec in regex_paths_map.items(): + if re.match(regex, request_path): + preferred_spec = spec + break + + # early exit conditions (i.e. validation) + if not regex_paths_map: + raise ValueError("openapi specification was not parsed") + elif not preferred_spec: + raise ValueError(f"path [{request_path}] is not in openapi specification") + elif request_method not in preferred_spec: + raise ValueError("method is not in response specification") + + # validating inbound request `body` + validate_request_body(openapi_spec, request_method, request_body, preferred_spec) + + # search for response schema `$ref` + responses = preferred_spec[request_method]["responses"] + if response_status not in responses: + raise ValueError("response status is not in path responses") + + # extract response example if it was requested explicitly + response_content_json = responses[response_status]["content"]["application/json"] + if response_example: + examples = response_content_json.get("examples", {}) + if response_example in examples: + example = examples[response_example]["value"] + else: + raise ValueError(f"response example `{response_example}` is not defined") + else: + # get schema `$ref`, extract schema name and get an example for that schema + if response_schema := response_content_json.get("schema"): + schemas_map, schema_name, schema_dict = extract_schema( + openapi_spec, response_schema + ) + _, example = recursive_schema_parse( + schema_name, schema_dict, schemas_map, dict() + ) + else: + example = primitive_type_example("string") + + return int(response_status), example + + +@functools.cache +def get_openapi_schema( + title: str = "Generated Pacts API", version: str = "1.0.0" +) -> dict: + """Get OpenAPI v3 schema from FastAPI service router.""" + from services.licensing.main import api_router + + return get_openapi(title=title, version=version, routes=api_router.routes) + + +async def pact_responder( + scope_method: str, + orig_path: str, + body: dict | None = None, + desired_status: int | None = None, + desired_example: str | None = None, +) -> tuple[int, dict]: + """ + Generic responder function. Invariant for pact endpoints. + + :param scope_method: (str) 'GET', 'POST', 'PUT' + :param orig_path: (str) request path from method responders + :param body: (optional dict) request body for a request + :param desired_status: (optional int) desired response `status code`, + controls which response is to generate + :param desired_example: (optional str) desired response `example`, + controls which response is to generate. Use in a case when openapi specification + defines named example responses. + """ + openapi_schema = get_openapi_schema() + if not orig_path.startswith("/"): + orig_path = f"/{orig_path}" + request_body = {} if body is None else body + return await example_openapi_response( + openapi_schema, + orig_path, + scope_method, + request_body, + response_status=desired_status, + response_example=desired_example, + ) + + +# FastAPI router with generic pact endpoints +pact_router = APIRouter() + + +@pact_router.get("/{orig_path:path}", response_model=None) +async def pacts_get( + orig_path: str, + response: Response, + x_pact_desired_status: Annotated[Union[int, None], Header()] = 200, + x_pact_desired_example: Annotated[Union[str, None], Header()] = None, +): + """Responder endpoint for `GET` method.""" + status_code, response_data = await pact_responder( + "get", + orig_path, + desired_status=x_pact_desired_status, + desired_example=x_pact_desired_example, + ) + response.status_code = status_code + return response_data + + +@pact_router.post("/{orig_path:path}", response_model=None) +async def pacts_post( + orig_path: str, + body: dict, + response: Response, + x_pact_desired_status: Annotated[Union[int, None], Header()] = 201, + x_pact_desired_example: Annotated[Union[str, None], Header()] = None, +): + """Responder endpoint for `POST` method.""" + status_code, response_data = await pact_responder( + "post", + orig_path, + body, + desired_status=x_pact_desired_status, + desired_example=x_pact_desired_example, + ) + response.status_code = status_code + return response_data + + +@pact_router.put("/{orig_path:path}", response_model=None) +async def pacts_put( + orig_path: str, + body: dict, + response: Response, + x_pact_desired_status: Annotated[Union[int, None], Header()] = 200, + x_pact_desired_example: Annotated[Union[str, None], Header()] = None, +): + """Responder endpoint for `PUT` method.""" + status_code, response_data = await pact_responder( + "put", + orig_path, + body, + desired_status=x_pact_desired_status, + desired_example=x_pact_desired_example, + ) + response.status_code = status_code + return response_data + + +@pact_router.delete("/{orig_path:path}", response_model=None) +async def pacts_delete( + orig_path: str, + response: Response, + x_pact_desired_status: Annotated[Union[int, None], Header()] = 200, + x_pact_desired_example: Annotated[Union[str, None], Header()] = None, +): + """Responder endpoint for `DELETE` method.""" + status_code, response_data = await pact_responder( + "delete", + orig_path, + desired_status=x_pact_desired_status, + desired_example=x_pact_desired_example, + ) + response.status_code = status_code + return response_data diff --git a/src/services/licensing/pagination.py b/src/services/licensing/pagination.py index 31ccf6f..a8aeb2e 100644 --- a/src/services/licensing/pagination.py +++ b/src/services/licensing/pagination.py @@ -1,19 +1,14 @@ from typing import Tuple, List, Any - +from fastapi_pagination.customization import CustomizedPage, UseParamsFields from fastapi_pagination.links import Page from fastapi_pagination.utils import verify_params -from pydantic import Field - from services.licensing import settings -CustomPage = Page.with_custom_options( - size=Field( - settings.pagination_default_pagesize, - ge=settings.pagination_min_pagesize, - le=settings.pagination_max_pagesize, - ), -) + +CustomPage = CustomizedPage[ + Page, UseParamsFields(size=settings.pagination_default_pagesize) +] def paginate(items: List[Any], page: int, page_size: int, total: int): @@ -23,7 +18,9 @@ def paginate(items: List[Any], page: int, page_size: int, total: int): page=page, size=max(len(items), 1), total=total, - pages=total / page_size if not total % page_size else total / page_size + 1, + pages=( + total / page_size if not total % page_size else int(total / page_size) + 1 + ), ) diff --git a/src/services/licensing/settings.py b/src/services/licensing/settings.py index 0d136dc..5c396bf 100644 --- a/src/services/licensing/settings.py +++ b/src/services/licensing/settings.py @@ -66,23 +66,6 @@ "PERMISSIONS_TOKEN_LIVETIME_SECS", default=86400 ) -# TODO As the 'shop' is currently just running within the licensing service, the -# TODO following two settings should move to the shop service when created... -# TODO the SHOP Service KID and attached private key for signing 'shop' token -shop_service_kid: str = config("SHOP_SERVICE_KID", default="", cast=str) -# the Shop Service private key used for all tokens generated by the service ... -shop_service_private_key: str = config( - "SHOP_SERVICE_PRIVATE_KEY", # secret - default="", - cast=str, -) -# Invoice service configuration variables -shop_invoice_url: str = config("SHOP_INVOICE_URL", default="") -# Invoice service `BasicAuth` parameters -shop_invoice_auth_username: str = config("SHOP_INVOICE_AUTH_USERNAME", default="") -shop_invoice_auth_password: str = config("SHOP_INVOICE_AUTH_PASSWORD", default="") - - # Eventlog export function: how to export events for further use ... events_export_function = config( "EVENTS_EXPORT_FUNCTION", @@ -95,7 +78,7 @@ ) # -# TODO to be outsourced: These are event export specific settings only +# TODO to be outsourced: These are bettermarks event export specific settings only # # backend DB settings bm_mongo_db_uri = config("MONGODB_URI", default="") # secret! @@ -103,7 +86,7 @@ bm_data_event_api_url = config("DATA_EVENT_API_URL", default="") bm_data_event_api_key = config("DATA_EVENT_API_KEY", default="") # secret -# SDWH connection is just used for school mappings used in event export +# SDWH connection is just used for bettermarks school mappings used in event export # This should definitely go to a mapping service as soon as possible! # Additionally, these settings should also be removed from general (open sourced) # settings diff --git a/src/services/licensing/tokens.py b/src/services/licensing/tokens.py index d4faea6..5041c2e 100644 --- a/src/services/licensing/tokens.py +++ b/src/services/licensing/tokens.py @@ -42,18 +42,3 @@ def create_licensing_token(claims: dict): ) token.make_signed_token(get_key_from_pem(settings.licensing_service_private_key)) return token.serialize() - - -def create_shop_token(claims: dict): - """ - Creates a JWT token based on EC-256 algorithm using the 'shop service' private key. - todo: should be moved to `shop` service - :param claims: the claims as a dict - :return: - """ - token = jwt.JWT( - header={"typ": "JWT", "kid": settings.shop_service_kid, "alg": "ES256"}, - claims=claims, - ) - token.make_signed_token(get_key_from_pem(settings.shop_service_private_key)) - return token.serialize() diff --git a/src/services/licensing/utils.py b/src/services/licensing/utils.py index 6a661de..af930c8 100644 --- a/src/services/licensing/utils.py +++ b/src/services/licensing/utils.py @@ -1,19 +1,25 @@ from services.licensing.constants import INFINITE_INT -def nof_free_seats(nof_seats: int, extra_seats: int, seats_occupied: int) -> int: +def nof_free_seats( + nof_seats: int, extra_seats: int, nof_occupied_seats: int | None +) -> int | None: """ returns the number of free seats of a license using some encoding for 'invinite' number of free seats. :param nof_seats: number of seats attached to the license (-1 ='infinite') :param extra_seats: optional 'extra seats' (0 for no extra seats) - :param seats_occupied: number of already occupied seats + :param nof_occupied_seats: number of already occupied seats :return: the number of still free (unoccupied) seats for the license. If nof_seats has the encoded infinity value (-1), the function returns - INFINITE_INT (currently represented by 1E18 as an integer)! + INFINITE_INT (currently represented by 1E18 as an integer)! In case, the provided + seats_occupied number is None, the function will also return None (seats + not available for a specific reason) """ + if nof_occupied_seats is None: + return None if nof_seats is None or extra_seats is None or extra_seats < 0: raise ValueError("Illegal value for 'nof_seats' or 'extra_seats'") if nof_seats < 0: return INFINITE_INT - return max(nof_seats + extra_seats - seats_occupied, 0) + return max(nof_seats + extra_seats - nof_occupied_seats, 0) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..8a37b69 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,161 @@ +from typing import Dict + +import pytest + +from jwcrypto import jwt, jwk + +SHOP_SERVICE_KID = "SHOP_SERVICE_KID" +HIERARCHY_PROVIDER_KID = "HIERARCHY_PROVIDER_KID" +BACKOFFICE_KID = "BACKOFFICE_KID" +NOT_EXISTING_KID = "NOT_EXISTING_KID" +INVALID_SIGNATURE_KEY_KID = "INVALID_SIGNATURE_KEY_KID" +LICENSING_SERVICE_KID = "LICENSING_KID" + +# we use 256 bit elliptic curve keys +TEST_HP_EC256_PRIVATE_KEY = """ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgJ4/5yLFU96V7miX2 +G1mgKLB3t9p8JdVbm89BezDKdA6hRANCAASY+6sGCs5Vua6NCw/2gdLkT8v5ttIA +m0f74KpTo2UL/zCpH9L3Gq/gOmSjs0MCkX4avWRpH6iUdCd56IdEgK46 +-----END PRIVATE KEY----- +""" + +TEST_HP_EC256_PUBLIC_KEY = """ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmPurBgrOVbmujQsP9oHS5E/L+bbS +AJtH++CqU6NlC/8wqR/S9xqv4Dpko7NDApF+Gr1kaR+olHQneeiHRICuOg== +-----END PUBLIC KEY----- +""" + +TEST_SS_EC256_PRIVATE_KEY = """ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgNncIejvJwudHuhVS +RmrQfnhURO26FXMXOdLP63bai5+hRANCAAQ6MDqb+wffBQd/vSEBvFMrUe4BTA0u +uu5RU6UzBYhiV4RlIZAbN0LklD16BFn5EKe1dpRmvKh4ivN/hsHwN/Tv +-----END PRIVATE KEY----- +""" + +TEST_SS_EC256_PUBLIC_KEY = """ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEOjA6m/sH3wUHf70hAbxTK1HuAUwN +LrruUVOlMwWIYleEZSGQGzdC5JQ9egRZ+RCntXaUZryoeIrzf4bB8Df07w== +-----END PUBLIC KEY----- +""" + +TEST_BO_EC256_PRIVATE_KEY = """ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg0VKjq/HU+MiX1wu6 +BeLUmqmAQECrncf6D+ywzSf9Bw6hRANCAASBFziT/yaDI7+Z2/pRJyT53dObRTSS +Z+fsvuZrO6XxTW8KozlxdU49xjhCeH9sZz4xlrkJgCre29fTiS/eeUin +-----END PRIVATE KEY----- +""" + +TEST_BO_EC256_PUBLIC_KEY = """ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgRc4k/8mgyO/mdv6USck+d3Tm0U0 +kmfn7L7mazul8U1vCqM5cXVOPcY4Qnh/bGc+MZa5CYAq3tvX04kv3nlIpw== +-----END PUBLIC KEY----- +""" + +TEST_INVALID_SIGNATURE_EC256_PRIVATE_KEY = """ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgJ4/5yLFU96V7miX2 +G1mgKLB3t9p8JdVbm89BezDKdA6hRANCAASY+6sGCs5Vua6NCw/2gdLkT8v5ttIA +m0f74KpTo2UL/zCpH9L3Gq/gOmSjs0MCkX4avWRpH6iUdCd56IdEgK46 +-----END PRIVATE KEY----- +""" + +TEST_INVALID_SIGNATURE_EC256_PUBLIC_KEY = """ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE281l1rMrVK+3RCst93avfl6JWFc/ +AYWlisHco7a3c+3Ob1OJQLhmDqEBszJpc6wsYsfaVW7USxsyEz0A/lQXpg== +-----END PUBLIC KEY----- +""" + +TEST_LICENSING_SERVICE_EC256_PRIVATE_KEY = """ +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgRLrl+FraA4fDhod9 +RsD6azYgqdcCZwgqQcEWG8AC4FChRANCAAQEj80O7Hs8/woLEfHCTafEYoMFQzYa +JVrHQG+d17TIuxEhL+MjBne3ovJl8/vPNlsyKPUYgtaYLpVlpBu5ovPe +-----END PRIVATE KEY----- +""" + +TEST_LICENSING_SERVICE_EC256_PUBLIC_KEY = """ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBI/NDux7PP8KCxHxwk2nxGKDBUM2 +GiVax0Bvnde0yLsRIS/jIwZ3t6LyZfP7zzZbMij1GILWmC6VZaQbuaLz3g== +-----END PUBLIC KEY----- +""" + +TEST_LICENSING_SERVICE_URL = "http://test-licesning-service-url.com" + + +# various settings mock +@pytest.fixture(autouse=True) +def test_settings(mocker): + mocker.patch( + "services.licensing.settings.licensing_service_url", TEST_LICENSING_SERVICE_URL + ) + + +# kid lookup mock! +@pytest.fixture(autouse=True) +def test_jwt_keys(mocker): + mocker.patch( + "services.licensing.settings.jwt_verification_keys", + { + HIERARCHY_PROVIDER_KID: { + "format": "pem", + "desc": "used as public (EC) JWS signature key OF hierarchy provider", + "key": TEST_HP_EC256_PUBLIC_KEY, + }, + SHOP_SERVICE_KID: { + "format": "pem", + "desc": "used as public (EC) JWS signature key OF shop service", + "key": TEST_SS_EC256_PUBLIC_KEY, + }, + BACKOFFICE_KID: { + "format": "pem", + "desc": "used as public (EC) JWS signature key OF backoffice service", + "key": TEST_BO_EC256_PUBLIC_KEY, + }, + INVALID_SIGNATURE_KEY_KID: { + "format": "pem", + "desc": "used as public (EC) JWS signature key OF some other service", + "key": TEST_INVALID_SIGNATURE_EC256_PUBLIC_KEY, + }, + }, + ) + mocker.patch( + "services.licensing.settings.licensing_service_kid", + "ff0c1ec8-42e3-4312-b35e-5a7c795eddd4", + ) + mocker.patch( + "services.licensing.settings.licensing_service_private_key", + TEST_LICENSING_SERVICE_EC256_PRIVATE_KEY, + ) + + +def get_private_key(kid: str): + if kid == HIERARCHY_PROVIDER_KID: + return jwk.JWK.from_pem(TEST_HP_EC256_PRIVATE_KEY.encode("utf-8")) + if kid == SHOP_SERVICE_KID: + return jwk.JWK.from_pem(TEST_SS_EC256_PRIVATE_KEY.encode("utf-8")) + if kid == BACKOFFICE_KID: + return jwk.JWK.from_pem(TEST_BO_EC256_PRIVATE_KEY.encode("utf-8")) + if kid == NOT_EXISTING_KID: + return jwk.JWK.from_pem(TEST_BO_EC256_PRIVATE_KEY.encode("utf-8")) + if kid == INVALID_SIGNATURE_KEY_KID: + return jwk.JWK.from_pem( + TEST_INVALID_SIGNATURE_EC256_PRIVATE_KEY.encode("utf-8") + ) + raise ValueError("Unknown KID") + + +def create_token(private_kid, iss, exp, sub, payload: Dict = None): + token = jwt.JWT( + header={"typ": "JWT", "alg": "ES256", "kid": private_kid}, + claims={"iss": iss, "exp": exp, "sub": sub} | (payload if payload else {}), + ) + token.make_signed_token(get_private_key(private_kid)) + return token.serialize() diff --git a/tests/integration/__init__.py b/tests/integration/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/integration/conftest.py b/tests/integration/conftest.py new file mode 100644 index 0000000..4520e9d --- /dev/null +++ b/tests/integration/conftest.py @@ -0,0 +1,763 @@ +import json +import asyncio +import datetime + +import structlog + +from hashlib import sha256 +from typing import Generator + +import pytest + +from fastapi import FastAPI +from fastapi_pagination import add_pagination +from httpx import AsyncClient, ASGITransport +from jwcrypto import jwt + +from services.licensing.api import endpoints +from services.licensing.api.v1.api import api_router +from services.licensing import settings +from services.licensing.business.service import LicensingService +from services.licensing.custom_types import Entity, SeatStatus, License +from services.licensing.data.sqlalchemy.unit_of_work import postgres_dsn +from services.licensing.main import ROUTE_PREFIX +from services.licensing.settings import transaction_manager, repository +from services.licensing.tokens import get_key_from_pem +from tests.conftest import ( + create_token, + SHOP_SERVICE_KID, + HIERARCHY_PROVIDER_KID, + BACKOFFICE_KID, + TEST_LICENSING_SERVICE_EC256_PUBLIC_KEY, +) + + +# we need to import all models here to set up the database ... +# Please do not remove the following 3 imports!! +from services.licensing.data.sqlalchemy.model.license import LicenseModel +from services.licensing.data.sqlalchemy.model.seat import SeatModel +from services.licensing.data.sqlalchemy.model.event_log import EventLogModel + +# Please do not remove that import!! +from services.licensing.data.sqlalchemy.model.base import Model + +logger = structlog.stdlib.get_logger(__name__) + + +TEST_DATABASE_DSN = postgres_dsn( + settings.db_host, + settings.db_port, + settings.db_user, + settings.db_password, + "test_licensing", +) + + +# we need that for setting up the DB tables ... +target_metadata = Model.metadata + + +def hashed_payload(payload_key, payload): + """helper: hashes some payload and returns the hash using some predefined structure""" + return { + "hashes": { + f"{payload_key}": { + "alg": "SHA256", + "hash": sha256(json.dumps(payload).encode("utf-8")).hexdigest(), + } + } + } + + +def check_license_service_token(token): + # deserialize nested token without decryption to get kid ... + jws_token = jwt.JWS() + jws_token.deserialize(token) + jws_kid = jws_token.jose_header["kid"] + assert jws_kid == settings.licensing_service_kid + jwt_token = jwt.JWT( + key=get_key_from_pem(TEST_LICENSING_SERVICE_EC256_PUBLIC_KEY.encode("utf-8")), + jwt=token, + ) + return json.loads(jwt_token.claims) + + +@pytest.fixture +def teacher_1() -> Entity: + return Entity(type_="teacher", eid="teacher_1@DE_bettermarks", level=0) + + +@pytest.fixture +def teacher_2() -> Entity: + return Entity(type_="teacher", eid="teacher_2@CH_bettermarks", level=0) + + +@pytest.fixture +def teacher_no_class_2() -> Entity: + return Entity(type_="teacher", eid="teacher_no_class_2", level=0) + + +@pytest.fixture +def student_1() -> Entity: + return Entity(type_="student", eid="student_1@DE_bettermarks", level=0) + + +@pytest.fixture +def student_2() -> Entity: + return Entity(type_="student", eid="student_2@CH_bettermarks", level=0) + + +@pytest.fixture +def student_3() -> Entity: + return Entity(type_="student", eid="student_3@DE_bettermarks", level=0) + + +@pytest.fixture +def class_1() -> Entity: + return Entity(type_="class", eid="class_1@DE_bettermarks", level=1) + + +@pytest.fixture +def class_2() -> Entity: + return Entity(type_="class", eid="class_2@CH_bettermarks", level=1) + + +@pytest.fixture +def school_1() -> Entity: + return Entity(type_="school", eid="school_1@DE_bettermarks", level=2) + + +@pytest.fixture +def school_2() -> Entity: + return Entity(type_="school", eid="school_2@CH_bettermarks", level=2) + + +@pytest.fixture +def state_1() -> Entity: + return Entity(type_="state", eid="DE-RP@DE_bettermarks", level=2) + + +@pytest.fixture +def hierarchy_provider_1_uri() -> str: + return "http://example_hierarchy_provider.com" + + +@pytest.fixture +def shop_service_1_url() -> str: + return "http://example_shop_service.com" + + +@pytest.fixture +def backoffice_1_uri() -> str: + return "http://example_backoffice.com" + + +@pytest.fixture +def product_1_eid() -> str: + return "product_1" + + +@pytest.fixture +def product_2_eid() -> str: + return "product_2" + + +@pytest.fixture +def admin_1_eid() -> str: + return "admin_1" + + +@pytest.fixture +def teacher_1_purchase_payload( + hierarchy_provider_1_uri, product_1_eid, class_1, class_2 +) -> dict: + return { + "hierarchy_provider_uri": hierarchy_provider_1_uri, + "owner_type": class_1.type_, + "owner_level": class_1.level, + "owner_eids": [class_1.eid, class_2.eid], + "valid_from": "2023-02-10", + "valid_to": "2024-02-10", + "nof_seats": 100, + "extra_seats": 0, + "product_eid": product_1_eid, + } + + +@pytest.fixture +def teacher_1_purchase_payload_state_license( + hierarchy_provider_1_uri, product_1_eid, class_1, class_2 +) -> dict: + """ + This is a fixture that supposed to crash requests, because of `owner_type`. + Teacher role shouldn't be able to purchase federal state licenses. + """ + return { + "hierarchy_provider_uri": hierarchy_provider_1_uri, + "owner_type": "state", + "owner_level": 10, + "owner_eids": [class_1.eid, class_2.eid], + "valid_from": "2023-02-10", + "valid_to": "2024-02-10", + "nof_seats": 100, + "extra_seats": 0, + "product_eid": product_1_eid, + } + + +@pytest.fixture +def teacher_1_trial_payload(product_1_eid, class_1) -> dict: + return { + "owner_type": class_1.type_, + "owner_level": class_1.level, + "owner_eid": class_1.eid, + "nof_seats": 50, + "product_eid": product_1_eid, + } + + +@pytest.fixture +def teacher_1_shop_authorization_token( + teacher_1, + shop_service_1_url, + teacher_1_purchase_payload, +): + return create_token( + SHOP_SERVICE_KID, + shop_service_1_url, + ( + datetime.datetime.now(tz=datetime.timezone.utc) + + datetime.timedelta(seconds=100) + ).timestamp(), + teacher_1.eid, + {"order": teacher_1_purchase_payload}, + ) + + +@pytest.fixture +def teacher_1_shop_authorization_token_state_license( + teacher_1, + shop_service_1_url, + teacher_1_purchase_payload_state_license, +) -> str: + """ + This fixture represents standard shop token, except the fact that + `owner_type` is `state` (federal state license, which is prohibited + to purchase by teachers. + """ + return create_token( + SHOP_SERVICE_KID, + shop_service_1_url, + ( + datetime.datetime.now(tz=datetime.timezone.utc) + + datetime.timedelta(seconds=100) + ).timestamp(), + teacher_1.eid, + {"order": teacher_1_purchase_payload_state_license}, + ) + + +@pytest.fixture +def teacher_1_memberships(teacher_1, class_1, class_2): + return [ + {"type": class_1.type_, "level": class_1.level, "eid": class_1.eid}, + {"type": class_2.type_, "level": class_2.level, "eid": class_2.eid}, + ] + + +@pytest.fixture +def teacher_1_memberships_authorization_token( + teacher_1, class_1, class_2, hierarchy_provider_1_uri, teacher_1_memberships +): + return create_token( + HIERARCHY_PROVIDER_KID, + hierarchy_provider_1_uri, + ( + datetime.datetime.now(tz=datetime.timezone.utc) + + datetime.timedelta(seconds=100) + ).timestamp(), + teacher_1.eid, + hashed_payload("memberships", teacher_1_memberships), + ) + + +@pytest.fixture +def teacher_1_hierarchies(teacher_1, class_1, school_1, state_1): + return [ + { + "eid": state_1.eid, + "type": state_1.type_, + "name": "Rheinland-Pfalz", + "level": state_1.level, + "children": [ + { + "eid": school_1.eid, + "type": school_1.type_, + "name": "school 1", + "level": school_1.level, + "children": [ + { + "eid": class_1.eid, + "type": class_1.type_, + "name": class_1.level, + "level": 1, + }, + ], + } + ], + } + ] + + +@pytest.fixture +def teacher_1_hierarchies_authorization_token( + teacher_1, class_1, school_1, hierarchy_provider_1_uri, teacher_1_hierarchies +): + return create_token( + HIERARCHY_PROVIDER_KID, + hierarchy_provider_1_uri, + ( + datetime.datetime.now(tz=datetime.timezone.utc) + + datetime.timedelta(seconds=100) + ).timestamp(), + teacher_1.eid, + hashed_payload("hierarchies", teacher_1_hierarchies), + ) + + +@pytest.fixture +def teacher_1_hierarchies_authorization_token_no_hierarchies( + teacher_1, class_1, school_1, hierarchy_provider_1_uri, teacher_1_hierarchies +): + return create_token( + HIERARCHY_PROVIDER_KID, + hierarchy_provider_1_uri, + ( + datetime.datetime.now(tz=datetime.timezone.utc) + + datetime.timedelta(seconds=100) + ).timestamp(), + teacher_1.eid, + hashed_payload("hierarchies", []), + ) + + +@pytest.fixture +def student_1_class_1_memberships(student_1, class_1): + return [ + {"type": class_1.type_, "level": class_1.level, "eid": class_1.eid}, + ] + + +@pytest.fixture +def student_1_class_1_memberships_authorization_token( + student_1, hierarchy_provider_1_uri, student_1_class_1_memberships +): + return create_token( + HIERARCHY_PROVIDER_KID, + hierarchy_provider_1_uri, + ( + datetime.datetime.now(tz=datetime.timezone.utc) + + datetime.timedelta(seconds=100) + ).timestamp(), + student_1.eid, + hashed_payload("memberships", student_1_class_1_memberships), + ) + + +@pytest.fixture +def student_1_class_2_memberships(student_1, class_2): + return [ + {"type": class_2.type_, "level": class_2.level, "eid": class_2.eid}, + ] + + +@pytest.fixture +def student_1_class_2_memberships_authorization_token( + student_1, hierarchy_provider_1_uri, student_1_class_2_memberships +): + return create_token( + HIERARCHY_PROVIDER_KID, + hierarchy_provider_1_uri, + ( + datetime.datetime.now(tz=datetime.timezone.utc) + + datetime.timedelta(seconds=100) + ).timestamp(), + student_1.eid, + hashed_payload("memberships", student_1_class_2_memberships), + ) + + +@pytest.fixture +def student_2_class_1_memberships(student_2, class_1): + return [ + {"type": class_1.type_, "level": class_1.level, "eid": class_1.eid}, + ] + + +@pytest.fixture +def student_2_class_1_memberships_authorization_token( + student_2, hierarchy_provider_1_uri, student_2_class_1_memberships +): + return create_token( + HIERARCHY_PROVIDER_KID, + hierarchy_provider_1_uri, + ( + datetime.datetime.now(tz=datetime.timezone.utc) + + datetime.timedelta(seconds=100) + ).timestamp(), + student_2.eid, + hashed_payload("memberships", student_2_class_1_memberships), + ) + + +@pytest.fixture +def student_3_class_1_memberships(student_3, class_1): + return [ + {"type": class_1.type_, "level": class_1.level, "eid": class_1.eid}, + ] + + +@pytest.fixture +def student_3_class_1_memberships_authorization_token( + student_3, hierarchy_provider_1_uri, student_3_class_1_memberships +): + return create_token( + HIERARCHY_PROVIDER_KID, + hierarchy_provider_1_uri, + ( + datetime.datetime.now(tz=datetime.timezone.utc) + + datetime.timedelta(seconds=100) + ).timestamp(), + student_3.eid, + hashed_payload("memberships", student_3_class_1_memberships), + ) + + +@pytest.fixture +def admin_backoffice_authorization_token(admin_1_eid, backoffice_1_uri): + return create_token( + BACKOFFICE_KID, + backoffice_1_uri, + ( + datetime.datetime.now(tz=datetime.timezone.utc) + + datetime.timedelta(seconds=100) + ).timestamp(), + admin_1_eid, + {"filter_restrictions": {}}, + ) + + +# TODO currently not used! (Will be used again when returning to 'callback URLS' to get memberships and hierarchies +# @pytest.fixture(autouse=True) +# async def override_get_request_memberships( +# mocker, +# teacher_1_memberships_authorization_token, +# teacher_1_memberships, +# student_1_class_1_memberships_authorization_token, +# student_1_class_1_memberships, +# student_1_class_2_memberships_authorization_token, +# student_1_class_2_memberships, +# ): +# async def mock_get_request(url: str, authorization_token: str = None): +# if authorization_token == teacher_1_memberships_authorization_token: +# return teacher_1_memberships +# if authorization_token == student_1_class_1_memberships_authorization_token: +# return student_1_class_1_memberships +# if authorization_token == student_1_class_2_memberships_authorization_token: +# return student_1_class_2_memberships +# assert 1 == 0 +# +# mocker.patch( +# "services.licensing.api.v1.endpoints.member.get_request", +# side_effect=mock_get_request, +# ) + + +# TODO currently not used! (Will be used again when returning to 'callback URLS' to get memberships and hierarchies +# @pytest.fixture(autouse=True) +# async def override_get_request_hierarchies( +# mocker, teacher_1_hierarchies_authorization_token, teacher_1_hierarchies +# ): +# async def mock_get_request(url: str, authorization_token: str = None): +# return teacher_1_hierarchies +# +# mocker.patch( +# "services.licensing.api.v1.endpoints.hierarchy.get_request", +# side_effect=mock_get_request, +# ) + + +@pytest.fixture +def admin_backoffice_authorization_token_with_filter_restrictions( + admin_1_eid, backoffice_1_uri +): + return create_token( + BACKOFFICE_KID, + backoffice_1_uri, + ( + datetime.datetime.now(tz=datetime.timezone.utc) + + datetime.timedelta(seconds=100) + ).timestamp(), + admin_1_eid, + {"filter_restrictions": {"manager_eid": ["DE_bettermarks", "DE_test"]}}, + ) + + +@pytest.fixture(scope="session") +def event_loop(request) -> Generator: # noqa: indirect usage + loop = asyncio.get_event_loop_policy().new_event_loop() + yield loop + loop.close() + + +async def start_app(): + from services.licensing.main import http_exception_handler, exception_handler + from services.licensing.exceptions import HTTPException + + app = FastAPI() + app.include_router(api_router, prefix=ROUTE_PREFIX) + app.include_router(endpoints.router, tags=["Dev"]) + + # Add pagination to the application + add_pagination(app) + app.add_exception_handler(HTTPException, http_exception_handler) + app.add_exception_handler(Exception, exception_handler) + + return app + + +@pytest.fixture +async def app_with_db() -> FastAPI: + # Setup: + logger.debug("Setup ...") + try: + # (re)create tables + async with transaction_manager() as tm: + async with tm.engine.begin() as conn: + await conn.run_sync(target_metadata.drop_all) + await conn.run_sync(target_metadata.create_all) + + yield await start_app() + + finally: + # Teardown: + logger.debug("Teardown ...") + async with transaction_manager() as tm: + async with tm.engine.begin() as conn: + await conn.run_sync(target_metadata.drop_all) + + +@pytest.fixture(autouse=True) +def override_engine_for_transaction_manager(mocker): + from services.licensing import settings + + mocker.patch.object(settings, "postgres_db_uri", TEST_DATABASE_DSN) + + +@pytest.fixture +async def client(app_with_db: FastAPI) -> AsyncClient: + transport = ASGITransport(app=app_with_db) + async with AsyncClient( + transport=transport, base_url="http://test-server" + ) as client: + yield client + + +@pytest.fixture +async def create_license(hierarchy_provider_1_uri, product_1_eid, teacher_1, class_1): + async def _create_license( + uuid, + id=None, + hierarchy_provider_uri=hierarchy_provider_1_uri, + product_eid=product_1_eid, + manager_eid=teacher_1.eid, + owner_type=class_1.type_, + owner_level=class_1.level, + owner_eids=[class_1.eid], + valid_from=datetime.date(2023, 1, 1), + valid_to=datetime.date(2024, 1, 1), + nof_seats=10, + extra_seats=0, + is_trial=False, + ): + async with transaction_manager() as tm: + await LicensingService(repository(tm.session)).create_license( + hierarchy_provider_uri=hierarchy_provider_uri, + manager_eid=manager_eid, + uuid=uuid, + product_eid=product_eid, + owner_type=owner_type, + owner_level=owner_level, + owner_eids=owner_eids, + valid_from=valid_from, + valid_to=valid_to, + nof_seats=nof_seats, + extra_seats=extra_seats, + is_trial=is_trial, + **({"id": id} if id else {}), + created_at=datetime.datetime( + 2023, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc + ), + ) + await tm.commit() + + return _create_license + + +@pytest.fixture +async def create_seat(teacher_1): + async def _create_seat( + ref_license, + user_eid=teacher_1.eid, + occupied_at=datetime.date(2023, 1, 1), + last_accessed_at=datetime.date(2023, 1, 1), + is_occupied=True, + status=SeatStatus.ACTIVE, + ): + async with transaction_manager() as tm: + await LicensingService(repository(tm.session)).create_seat( + ref_license=ref_license, + user_eid=user_eid, + occupied_at=occupied_at, + last_accessed_at=last_accessed_at, + is_occupied=is_occupied, + status=status, + created_at=datetime.datetime( + 2023, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc + ), + ) + await tm.commit() + + return _create_seat + + +@pytest.fixture +async def create_many_licenses_with_seats(create_license, create_seat): + async def _create_many_licenses(nof_licenses: int): + for i_ in range(1, nof_licenses + 1): + await create_license( + id=i_, + uuid=f"{i_:08d}-1111-1111-1111-111111111111", + owner_type="class", + owner_level=1, + owner_eids=[f"{nof_licenses + 1 - i_:08d}"], + ) + await create_seat( + ref_license=i_, + ) + + return _create_many_licenses + + +@pytest.fixture +async def update_license(): + async def _update_license(uuid, **kwargs) -> License: + async with transaction_manager() as tm: + l_ = await LicensingService(repository(tm.session)).update_license( + uuid, **kwargs + ) + await tm.session.commit() + return l_ + + return _update_license + + +@pytest.fixture(params=["licenses"]) +def licenses_route_admin( + request, + teacher_1, + admin_backoffice_authorization_token, +): + match request.param: + case "licenses": + return ( + request.param, + "/v1/admin/licenses", + admin_backoffice_authorization_token, + [], + ) + case _: + raise ValueError + + +# todo: probable typo in params= : managed_licenses is duplicated +@pytest.fixture(params=["managed_licenses", "managed_licenses"]) +def licenses_route( + request, + teacher_1, + teacher_1_hierarchies, + teacher_1_hierarchies_authorization_token, +): + match request.param: + # todo: probable typo here, otherwise a duplicated code + case "managed_licenses": + return ( + request.param, + "/v1/hierarchy/licenses", + teacher_1_hierarchies_authorization_token, + teacher_1_hierarchies, + ) + case "managed_licenses": + return ( + request.param, + "/v1/hierarchy/licenses", + teacher_1_hierarchies_authorization_token, + teacher_1_hierarchies, + ) + case _: + raise ValueError + + +async def query_event_log(): + async with transaction_manager() as tm: + return await LicensingService(repository(tm.session)).get_event_logs() + + +@pytest.fixture +def teacher_1_shop_checkout_payload( + teacher_1, + class_1, + teacher_1_hierarchies, +): + return { + "hierarchies": teacher_1_hierarchies, + "manager_eid": teacher_1.eid, + "owner_type": class_1.type_, + "owner_level": class_1.level, + "owner_eids": [class_1.eid], + "owner_school_names": "selectedSchoolName", + "product_eid": None, + "valid_from": None, + "valid_to": None, + "seats": 99, + "survey": "Schulbudget", + "firstname": "firstName", + "lastname": "lastName", + "phone": "+490001112233", + "email": "test@mail.local", + "address_institution": "addressSchoolName", + "address_street": "Sonnenstr. 1", + "address_line2": "", + "address_line3": "", + "address_zip": "10999", + "address_city": "Berlin", + "address_country": "DE", + "vat_id": "", + "system": "DE_bettermarks", + } + + +@pytest.fixture +def admin_license_example(): + return { + "product_eid": "full_access", + "manager_eid": "1@DE_bettermarks", + "owner_type": "class", + "valid_from": "2023-01-01", + "valid_to": "2024-01-01", + "nof_seats": 20, + "notes": None, + "hierarchy_provider_uri": "https://school.bettermarks.loc/ucm", + "owner_level": 1, + "owner_eids": ["1@DE_bettermarks"], + } diff --git a/tests/integration/test_admin.py b/tests/integration/test_admin.py new file mode 100644 index 0000000..529a2f7 --- /dev/null +++ b/tests/integration/test_admin.py @@ -0,0 +1,360 @@ +import datetime +import json + +import pytest +from fastapi import status as http_status +from httpx import AsyncClient + +from services.licensing.custom_types import SeatStatus + + +@pytest.mark.asyncio +async def test_get_license_multiple_seats__ok( + client: AsyncClient, + create_license, + create_seat, + admin_backoffice_authorization_token, + student_1, + student_2, + student_3, +): + # + # checks 'licenses/<>' route even for already redeemed licenses + # (This also checks the resolution of a bug, where we got a + # 'Multiple rows were found when one or none was required' exception, when + # requesting a license, that has already more than on seat redeemed. + # + license_uuid = "11111111-1111-1111-1111-111111111111" + await create_license( + id=1, + uuid=license_uuid, + manager_eid="someone@DE_bettermarks", + ) + await create_seat(1, user_eid=student_1.eid) + await create_seat( + 1, user_eid=student_2.eid, is_occupied=False, status=SeatStatus.EXPIRED + ) + await create_seat(1, user_eid=student_3.eid) + + response = await client.get( + f"/v1/admin/licenses/{license_uuid}", + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + license_ = json.loads(response._content) + assert license_["uuid"] == license_uuid + assert license_["nof_occupied_seats"] == 2 + + +@pytest.mark.asyncio +async def test_get_license_no_seat__ok( + client: AsyncClient, + create_license, + create_seat, + admin_backoffice_authorization_token, + student_2, +): + # checks 'licenses/<>' route with no seats attached + license_uuid = "11111111-1111-1111-1111-111111111111" + await create_license( + id=1, + uuid=license_uuid, + manager_eid="someone@DE_bettermarks", + ) + # only expired seat ... + await create_seat( + 1, user_eid=student_2.eid, is_occupied=False, status=SeatStatus.EXPIRED + ) + response = await client.get( + f"/v1/admin/licenses/{license_uuid}", + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + license_ = json.loads(response._content) + assert license_["uuid"] == license_uuid + assert license_["nof_occupied_seats"] == 0 + + +async def test_admin__license_create__ok( + client: AsyncClient, + admin_license_example, + admin_backoffice_authorization_token, +): + response = await client.post( + "/v1/admin/licenses", + json=admin_license_example, + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_201_CREATED + + +@pytest.mark.parametrize(("extra_seats", "result"), [(20, 20), (None, 0), (0, 0)]) +async def test_admin__license_create__extra_seats( + client: AsyncClient, + admin_license_example, + admin_backoffice_authorization_token, + extra_seats, + result, +): + response = await client.post( + "/v1/admin/licenses", + json={**admin_license_example, "extra_seats": extra_seats}, + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_201_CREATED + license_data = json.loads(response._content) + assert license_data["extra_seats"] == result + + +@pytest.mark.parametrize(("nof_seats", "result"), [(20, 20), (None, -1), (0, 0)]) +async def test_admin__license_create__nof_seats( + client: AsyncClient, + admin_license_example, + admin_backoffice_authorization_token, + nof_seats, + result, +): + response = await client.post( + "/v1/admin/licenses", + json={**admin_license_example, "nof_seats": nof_seats}, + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_201_CREATED + license_data = json.loads(response._content) + assert license_data["nof_seats"] == result + + +@pytest.mark.parametrize( + "inbound_data", + [ + {"manager_eid": "3@DE_bettermaks"}, + {"nof_seats": 30}, + {"nof_seats": 30, "manager_eid": "3@DE_bettermaks"}, + ], +) +async def test_admin__license_update__ok( + client: AsyncClient, + admin_license_example, + admin_backoffice_authorization_token, + inbound_data, +): + """...""" + # prepare target (initialization) + response = await client.post( + "/v1/admin/licenses", + json=admin_license_example, + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_201_CREATED + license_data = json.loads(response._content) + license_uuid = license_data["uuid"] + + # modify target + response = await client.put( + f"/v1/admin/licenses/{license_uuid}", + json=inbound_data, + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + + # check response + response = await client.get( + f"/v1/admin/licenses/{license_uuid}", + params=[], + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + + # check response data + license_data = json.loads(response._content) + for key, value in inbound_data.items(): + assert key in license_data + assert value == license_data[key] + + +@pytest.mark.parametrize( + ("original_data", "update_data", "res_nof_seats"), + [ + pytest.param( + {"nof_seats": 20}, {"nof_seats": 0}, 0, id="nof_seats from 20 to 0" + ), + pytest.param( + {"nof_seats": 20}, + {"nof_seats": None}, + -1, + id="nof_seats from 20 to implicit infinity", + ), + pytest.param( + {"nof_seats": 20}, + {"nof_seats": -1}, + -1, + id="nof_seats from 20 to explicit infinity", + ), + pytest.param( + {"nof_seats": 20}, + {"notes": "hola"}, + 20, + id="nof_seats stays same", + ), + pytest.param( + {"nof_seats": -1}, + {"nof_seats": None}, + -1, + id="nof_seats from explicit infinity to implicit infinity", + ), + pytest.param( + {"nof_seats": -1}, + {"nof_seats": 20}, + 20, + id="nof_seats from infinity to 20", + ), + pytest.param( + {"nof_seats": -1}, + {"notes": "hola"}, + -1, + id="nof_seats stays infinity", + ), + ], +) +async def test_admin__license_update__nof_seats( + client: AsyncClient, + admin_backoffice_authorization_token, + admin_license_example, + original_data, + update_data, + res_nof_seats, +): + # prepare target (initialization) + response = await client.post( + "/v1/admin/licenses", + json=admin_license_example | original_data, + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_201_CREATED + license_data = json.loads(response._content) + license_uuid = license_data["uuid"] + + # modify target + response = await client.put( + f"/v1/admin/licenses/{license_uuid}", + json=update_data, + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + + # check response + response = await client.get( + f"/v1/admin/licenses/{license_uuid}", + params=[], + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + + # check response data + license_data = json.loads(response._content) + assert license_data["nof_seats"] == res_nof_seats + + +@pytest.mark.parametrize( + ("original_data", "update_data", "res_extra_seats"), + [ + pytest.param( + {"extra_seats": 20}, {"extra_seats": 0}, 0, id="extra_seats from 20 to 0" + ), + pytest.param( + {"extra_seats": 20}, + {"extra_seats": None}, + 0, + id="extra_seats from 20 to 0", + ), + pytest.param( + {"extra_seats": 20}, + {"notes": "hola"}, + 20, + id="extra_seats stays same", + ), + pytest.param( + {"extra_seats": 0}, + {"extra_seats": None}, + 0, + id="extra_seats from explicit 0 to implicit 0", + ), + pytest.param( + {"extra_seats": None}, + {"extra_seats": 0}, + 0, + id="extra_seats from implicit 0 to explicit 0", + ), + pytest.param( + {"extra_seats": 0}, + {"notes": "hola"}, + 0, + id="extra_seats stays 0", + ), + pytest.param( + {"extra_seats": None}, + {"notes": "hola"}, + 0, + id="extra_seats stays implicit 0", + ), + ], +) +async def test_admin__license_update__extra_seats( + client: AsyncClient, + admin_backoffice_authorization_token, + admin_license_example, + original_data, + update_data, + res_extra_seats, +): + # prepare target (initialization) + response = await client.post( + "/v1/admin/licenses", + json=admin_license_example | original_data, + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_201_CREATED + license_data = json.loads(response._content) + license_uuid = license_data["uuid"] + + # modify target + response = await client.put( + f"/v1/admin/licenses/{license_uuid}", + json=update_data, + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + + # check response + response = await client.get( + f"/v1/admin/licenses/{license_uuid}", + params=[], + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + + # check response data + license_data = json.loads(response._content) + assert license_data["extra_seats"] == res_extra_seats + + +@pytest.mark.asyncio +async def test_licenses__created_at_format( + client: AsyncClient, admin_backoffice_authorization_token, admin_license_example +): + response = await client.post( + "/v1/admin/licenses", + json=admin_license_example, + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_201_CREATED + + response = await client.get( + "/v1/admin/licenses", + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + assert datetime.datetime.strptime( + json.loads(response._content)["items"][0]["created_at"], + "%Y-%m-%dT%H:%M:%S.%f+00:00", + ) diff --git a/tests/integration/test_admin_license_query_filter.py b/tests/integration/test_admin_license_query_filter.py new file mode 100644 index 0000000..81f2f88 --- /dev/null +++ b/tests/integration/test_admin_license_query_filter.py @@ -0,0 +1,274 @@ +import datetime +import json + +from httpx import AsyncClient +from fastapi import status as http_status +from freezegun import freeze_time + +import pytest + +from services.licensing.custom_types import SeatStatus + + +@pytest.fixture +async def licenses_for_filtering( + create_license, + product_1_eid, + product_2_eid, + teacher_1, + teacher_2, + class_1, + class_2, + school_1, + school_2, +): + i_ = 0 + for manager_eid in [teacher_1.eid, teacher_2.eid]: + for owner in [class_1, class_2, school_1, school_2]: + for product_eid in [product_1_eid, product_2_eid]: + i_ += 1 + await create_license( + id=i_, + uuid=f"{i_:08d}-1111-1111-1111-111111111111", + product_eid=product_eid, + manager_eid=manager_eid, + owner_type=owner.type_, + owner_level=owner.level, + owner_eids=[owner.eid], + valid_from=datetime.date(2023, 1, 1), + valid_to=datetime.date(2024, 1, 1), + ) + + +@pytest.fixture( + params=[ + "manager_eid=teacher_1.eid", + "manager_eid=teacher_2.eid", + "manager_eid=DE_bettermarks", + "manager_eid=DE_bet", + "manager_eid=CH_bettermarks", + "manager_eid=CH_bet", + "manager_eid=unknown", + "product_eid=product_1_eid", + "product_eid=product_2_eid", + "product_eid=pro*", + "product_eid=unknown", + "owner_eid=class_1.eid", + "owner_eid=class_2.eid", + "owner_eid=class*", + "owner_eid=school_1.eid", + "owner_eid=school_2.eid", + "owner_eid=unknown", + "owner_level=1", + "owner_level=2", + "owner_level=-1", + "owner_type=class", + "owner_type=school", + "owner_type=unknown", + "is_trial=True", + "is_trial=False", + "valid_from=2022-12-31", + "valid_from=2023-12-31", + "valid_to=2022-12-31", + "valid_to=2024-12-31", + "valid_from=2022-05-31&valid_to=2025-10-31", + ] +) +def licenses_filters( + request, + product_1_eid, + product_2_eid, + teacher_1, + teacher_2, + class_1, + class_2, + school_1, + school_2, +): + match request.param: + case "manager_eid=teacher_1.eid": + return [("manager_eid", teacher_1.eid)], [8, 8] + case "manager_eid=teacher_2.eid": + return [("manager_eid", teacher_2.eid)], [8, 0] + case "manager_eid=DE_bettermarks": + return [("manager_eid", "DE_bettermarks")], [8, 8] + case "manager_eid=DE_bet": + return [("manager_eid", "DE_bet")], [8, 8] + case "manager_eid=CH_bettermarks": + return [("manager_eid", "CH_bettermarks")], [8, 0] + case "manager_eid=CH_bet": + return [("manager_eid", "CH_bet")], [8, 0] + case "manager_eid=unknown": + return [("manager_eid", "unknown")], [0, 0] + case "product_eid=product_1_eid": + return [("product_eid", product_1_eid)], [8, 4] + case "product_eid=product_2_eid": + return [("product_eid", product_2_eid)], [8, 4] + case "product_eid=pro*": + return [("product_eid", "pro")], [16, 8] + case "product_eid=unknown": + return [("product_eid", "unknown")], [0, 0] + case "owner_eid=class_1.eid": + return [("owner_eid", class_1.eid)], [4, 2] + case "owner_eid=class_2.eid": + return [("owner_eid", class_2.eid)], [4, 2] + case "owner_eid=class*": + return [("owner_eid", "class")], [8, 4] + case "owner_eid=school_1.eid": + return [("owner_eid", school_1.eid)], [4, 2] + case "owner_eid=school_2.eid": + return [("owner_eid", school_2.eid)], [4, 2] + case "owner_eid=unknown": + return [("owner_eid", "unknown")], [0, 0] + case "owner_level=1": + return [("owner_level", 1)], [8, 4] + case "owner_level=2": + return [("owner_level", 2)], [8, 4] + case "owner_level=-1": + return [("owner_level", -1)], [0, 0] + case "owner_type=class": + return [("owner_type", "class")], [8, 4] + case "owner_type=school": + return [("owner_type", "school")], [8, 4] + case "owner_type=unknown": + return [("owner_type", "unknown")], [0, 0] + case "is_trial=True": + return [("is_trial", True)], [0, 0] + case "is_trial=False": + return [("is_trial", False)], [16, 8] + case "valid_from=2022-12-31": + return [("valid_from", datetime.date(2022, 12, 31))], [16, 8] + case "valid_from=2023-12-31": + return [("valid_from", datetime.date(2023, 12, 31))], [0, 0] + case "valid_to=2022-12-31": + return [("valid_to", datetime.date(2022, 12, 31))], [0, 0] + case "valid_to=2024-12-31": + return [("valid_to", datetime.date(2024, 12, 31))], [16, 8] + case "valid_from=2022-05-31&valid_to=2025-10-31": + return [ + ("valid_from", datetime.date(2022, 5, 31)), + ("valid_to", datetime.date(2025, 10, 31)), + ], [16, 8] + case _: + raise ValueError + + +@pytest.mark.parametrize( + "token_type", ["without_restriction_filters", "with_restriction_filters"] +) +@pytest.mark.asyncio +async def test_licenses_filter__ok( + token_type: str, + client: AsyncClient, + licenses_filters, + licenses_for_filtering, # needed, do not remove + admin_backoffice_authorization_token, + admin_backoffice_authorization_token_with_filter_restrictions, +): + if token_type == "without_restriction_filters": + token = admin_backoffice_authorization_token + expected_index = 0 + else: + token = admin_backoffice_authorization_token_with_filter_restrictions + expected_index = 1 + + filter_params, expected = licenses_filters + filter_string = "&".join([f"{k}={v}" for k, v in filter_params]) + response = await client.get( + f"/v1/admin/licenses?{filter_string}", + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + assert len(json.loads(response._content)["items"]) == expected[expected_index] + + +@freeze_time("2023-01-01") +@pytest.mark.parametrize( + "token_type", ["without_restriction_filters", "with_restriction_filters"] +) +@pytest.mark.asyncio +async def test_license_filter__ok( + token_type: str, + client: AsyncClient, + create_license, + create_seat, + admin_backoffice_authorization_token, + admin_backoffice_authorization_token_with_filter_restrictions, +): + await create_license( + id=1, + uuid="11111111-1111-1111-1111-111111111111", + manager_eid="someone@DE_bettermarks", + ) + await create_seat(1) + await create_license( + id=2, + uuid="22222222-1111-1111-1111-111111111111", + manager_eid="someone@CH_bettermarks", + ) + + if token_type == "without_restriction_filters": + token = admin_backoffice_authorization_token + id_to_fetch, expected_is_none = "11111111-1111-1111-1111-111111111111", False + else: + token = admin_backoffice_authorization_token_with_filter_restrictions + id_to_fetch, expected_is_none = "22222222-1111-1111-1111-111111111111", True + + response = await client.get( + f"/v1/admin/licenses/{id_to_fetch}", + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + assert (json.loads(response._content) is None) == expected_is_none + + +@freeze_time("2023-01-01") +@pytest.mark.parametrize( + "redeemed_seats_percentage", [10, 20, 40, 50, 80, 90, 100, 110] +) +@pytest.mark.asyncio +async def test_license_filter_redeemed_seats__ok( + redeemed_seats_percentage: int, + client: AsyncClient, + create_license, + create_seat, + class_1, + class_2, + admin_backoffice_authorization_token, +): + # tests for special aggregation filters: redeemed_seats + # test should return a matching license, if percentage of redeemed seats + # (occupied seats) is at least the given number. We apply tests for + # percentages [10, 20, 40, 50, 80, 90, 100, 110] + nof_total_seats = 10 + nof_redeemed_seats = int(redeemed_seats_percentage / 100.0 * nof_total_seats) + await create_license( + id=1, + uuid="11111111-1111-1111-1111-111111111111", + owner_eids=[class_1.eid, class_2.eid], + nof_seats=nof_total_seats, + ) + for i_ in range(1, nof_redeemed_seats): + await create_seat(1, user_eid=f"user_{i_}") # regular seats + await create_seat( # 1 expired seat + 1, + user_eid=f"user_{nof_redeemed_seats}", + is_occupied=False, + status=SeatStatus.EXPIRED, + ) + # should not match, one seat is missing to reach percentage + response = await client.get( + f"/v1/admin/licenses?redeemed_seats={redeemed_seats_percentage}", + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + assert len(json.loads(response._content)["items"]) == 0 + + # ok, now it should match, as we have enough seats! + await create_seat(1, user_eid=f"user_{nof_redeemed_seats}") + response = await client.get( + f"/v1/admin/licenses?redeemed_seats={redeemed_seats_percentage}", + headers={"Authorization": f"Bearer {admin_backoffice_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + assert len(json.loads(response._content)["items"]) == 1 diff --git a/tests/integration/test_event_log.py b/tests/integration/test_event_log.py new file mode 100644 index 0000000..44729b6 --- /dev/null +++ b/tests/integration/test_event_log.py @@ -0,0 +1,326 @@ +import datetime +import json +from copy import deepcopy +from dataclasses import asdict + +from httpx import AsyncClient +from fastapi import status as http_status +from freezegun import freeze_time + +import pytest + +from services.licensing.custom_types import SeatStatus, EventType +from tests.integration.conftest import query_event_log + + +# +# redeeming tests +# + + +def dict_without_event_id(data): + return {key: value for key, value in data if key != "event_id"} + + +@pytest.mark.asyncio +@freeze_time("2023-01-01") +async def test_event_log_purchase_license__ok( + client: AsyncClient, + teacher_1, + teacher_1_shop_authorization_token, + teacher_1_purchase_payload, +): + response = await client.post( + "/v1/order/licenses", + json={}, + headers={"Authorization": f"Bearer {teacher_1_shop_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_201_CREATED + result_json = json.loads(response._content) + + assert [ + asdict(l_, dict_factory=dict_without_event_id) for l_ in await query_event_log() + ] == [ + { + "event_type": str(EventType.LICENSE_CREATED), + "event_timestamp": datetime.datetime( + 2023, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc + ), + "event_version": 1, + "event_payload": { + "uuid": result_json["uuid"], + "is_trial": False, + "valid_from": teacher_1_purchase_payload["valid_from"], + "valid_to": teacher_1_purchase_payload["valid_to"], + "nof_seats": teacher_1_purchase_payload["nof_seats"], + "extra_seats": teacher_1_purchase_payload["extra_seats"], + "owner_eids": teacher_1_purchase_payload["owner_eids"], + "owner_type": teacher_1_purchase_payload["owner_type"], + "manager_eid": teacher_1.eid, + "owner_level": teacher_1_purchase_payload["owner_level"], + "product_eid": teacher_1_purchase_payload["product_eid"], + "hierarchy_provider_uri": teacher_1_purchase_payload[ + "hierarchy_provider_uri" + ], + "order_id": None, + }, + } + ] + + +@pytest.mark.asyncio +@freeze_time("2023-01-01") +async def test_event_log_create_trial_license__ok( + client: AsyncClient, + teacher_1, + teacher_1_memberships, + teacher_1_memberships_authorization_token, + teacher_1_trial_payload, + hierarchy_provider_1_uri, +): + payload = deepcopy(teacher_1_trial_payload) + payload["memberships"] = teacher_1_memberships + + response = await client.post( + "/v1/member/licenses/trial", + json=payload, + headers={ + "Authorization": f"Bearer {teacher_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_201_CREATED + result_json = json.loads(response._content) + + assert [ + asdict(l_, dict_factory=dict_without_event_id) for l_ in await query_event_log() + ] == [ + { + "event_type": str(EventType.LICENSE_CREATED), + "event_timestamp": datetime.datetime( + 2023, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc + ), + "event_version": 1, + "event_payload": { + "uuid": result_json["uuid"], + "is_trial": True, + "valid_from": "2023-01-01", + "valid_to": "2023-02-26", + "nof_seats": 50, + "extra_seats": 0, + "owner_eids": [teacher_1_trial_payload["owner_eid"]], + "owner_type": teacher_1_trial_payload["owner_type"], + "manager_eid": teacher_1.eid, + "owner_level": teacher_1_trial_payload["owner_level"], + "product_eid": teacher_1_trial_payload["product_eid"], + "hierarchy_provider_uri": hierarchy_provider_1_uri, + }, + } + ] + + +@pytest.mark.asyncio +@freeze_time("2023-01-01") +async def test_event_log_update_license__ok( + client: AsyncClient, + teacher_1, + teacher_1_memberships, + teacher_1_memberships_authorization_token, + teacher_1_trial_payload, + create_license, + update_license, +): + license_uuid = "22222222-aea8-4de2-bcca-7b1945285502" + await create_license( + uuid=license_uuid, + valid_from=datetime.date(2000, 1, 1), + valid_to=datetime.date(2023, 1, 1), + ) + l_ = await update_license(license_uuid, valid_to=datetime.date(2023, 12, 31)) + assert str(l_.uuid) == license_uuid + assert [ + asdict(l_, dict_factory=dict_without_event_id) + for l_ in (await query_event_log())[1:] + ] == [ + { + "event_type": str(EventType.LICENSE_UPDATED), + "event_timestamp": datetime.datetime( + 2023, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc + ), + "event_version": 1, + "event_payload": { + "uuid": license_uuid, + "valid_to": "2023-12-31", + "manager_eid": teacher_1.eid, + }, + } + ] + + +@pytest.mark.asyncio +@freeze_time("2023-01-01") +async def test_event_log_redeem_license__ok( + client: AsyncClient, + create_license, + student_1_class_1_memberships, + student_1_class_1_memberships_authorization_token, + student_1, + hierarchy_provider_1_uri, + product_1_eid, +): + # in this case, no event log for creating licens is being created + uuid = "22222222-aea8-4de2-bcca-7b1945285502" + await create_license(uuid=uuid) + + response = await client.post( + "/v1/member/permissions", + json={"memberships": student_1_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_1_class_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert [ + asdict(l_, dict_factory=dict_without_event_id) + for l_ in (await query_event_log())[1:] + ] == [ + { + "event_type": str(EventType.SEAT_CREATED), + "event_timestamp": datetime.datetime( + 2023, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc + ), + "event_version": 1, + "event_payload": { + "uuid": uuid, + "status": str(SeatStatus.ACTIVE), + "user_eid": student_1.eid, + "is_occupied": True, + "occupied_at": "2023-01-01T00:00:00+00:00", + "last_accessed_at": "2023-01-01T00:00:00+00:00", + }, + }, + { + "event_type": str(EventType.PERMISSIONS_REQUESTED), + "event_timestamp": datetime.datetime( + 2023, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc + ), + "event_version": 1, + "event_payload": { + "user_eid": student_1.eid, + "accessible_products": [product_1_eid], + "hierarchy_provider_uri": hierarchy_provider_1_uri, + }, + }, + ] + + +@pytest.mark.asyncio +@freeze_time("2023-01-01") +async def test_redeem_license__200_ok_no_products__seat_expired( + client: AsyncClient, + create_license, + update_license, + teacher_1, + student_1_class_1_memberships_authorization_token, + student_1_class_1_memberships, + student_1, + hierarchy_provider_1_uri, + product_1_eid, +): + """ + License cannot be redeemed, because it has expired, but + a seat already has been occupied. + """ + license_uuid = "22222222-aea8-4de2-bcca-7b1945285502" + await create_license( + uuid=license_uuid, + valid_from=datetime.date(2000, 1, 1), + valid_to=datetime.date(2023, 1, 1), + ) + await client.post( + "/v1/member/permissions", + json={"memberships": student_1_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_1_class_1_memberships_authorization_token}" + }, + ) + # expire license ... + await update_license(license_uuid, valid_to=datetime.date(2022, 1, 1)) + response = await client.post( + "/v1/member/permissions", + json={"memberships": student_1_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_1_class_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert [ + asdict(l_, dict_factory=dict_without_event_id) + for l_ in (await query_event_log())[1:] + ] == [ + { + "event_type": str(EventType.SEAT_CREATED), + "event_timestamp": datetime.datetime( + 2023, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc + ), + "event_version": 1, + "event_payload": { + "uuid": license_uuid, + "status": str(SeatStatus.ACTIVE), + "user_eid": student_1.eid, + "is_occupied": True, + "occupied_at": "2023-01-01T00:00:00+00:00", + "last_accessed_at": "2023-01-01T00:00:00+00:00", + }, + }, + { + "event_type": str(EventType.PERMISSIONS_REQUESTED), + "event_timestamp": datetime.datetime( + 2023, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc + ), + "event_version": 1, + "event_payload": { + "user_eid": student_1.eid, + "accessible_products": [product_1_eid], + "hierarchy_provider_uri": hierarchy_provider_1_uri, + }, + }, + { + "event_type": str(EventType.LICENSE_UPDATED), + "event_timestamp": datetime.datetime( + 2023, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc + ), + "event_version": 1, + "event_payload": { + "uuid": license_uuid, + "valid_to": "2022-01-01", + "manager_eid": teacher_1.eid, + }, + }, + { + "event_type": str(EventType.SEAT_UPDATED), + "event_timestamp": datetime.datetime( + 2023, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc + ), + "event_version": 1, + "event_payload": { + "uuid": license_uuid, + "status": str(SeatStatus.EXPIRED), + "user_eid": student_1.eid, + "is_occupied": False, + "occupied_at": "2023-01-01T00:00:00+00:00", + "last_accessed_at": "2023-01-01T00:00:00+00:00", + }, + }, + { + "event_type": str(EventType.PERMISSIONS_REQUESTED), + "event_timestamp": datetime.datetime( + 2023, 1, 1, 0, 0, 0, tzinfo=datetime.timezone.utc + ), + "event_version": 1, + "event_payload": { + "user_eid": student_1.eid, + "accessible_products": [], + "hierarchy_provider_uri": hierarchy_provider_1_uri, + }, + }, + ] diff --git a/tests/integration/test_hierarchy.py b/tests/integration/test_hierarchy.py new file mode 100644 index 0000000..9e0fdfb --- /dev/null +++ b/tests/integration/test_hierarchy.py @@ -0,0 +1,412 @@ +import datetime +from freezegun import freeze_time +import pytest +from fastapi import status as http_status +from httpx import AsyncClient + + +import json + + +@pytest.mark.asyncio +async def test_get_managed_licenses__ok( + client: AsyncClient, + create_license, + teacher_1_hierarchies_authorization_token, + teacher_1, + teacher_1_hierarchies, + teacher_2, + product_1_eid, + class_1, + school_1, +): + await create_license(uuid="11111111-aea8-4de2-bcca-7b1945285502") + await create_license( + uuid="11111111-2f05-4211-8eb4-a03b01a047a5", + owner_type=school_1.type_, + owner_level=school_1.level, + owner_eids=[school_1.eid], + ) + await create_license( + uuid="22222222-aea8-4de2-bcca-7b1945285502", manager_eid=teacher_2.eid + ) + + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": teacher_1_hierarchies}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert json.loads(response._content)["items"] == [ + { + "uuid": "11111111-aea8-4de2-bcca-7b1945285502", + "valid_from": "2023-01-01", + "valid_to": "2024-01-01", + "created_at": "2023-01-01T00:00:00+00:00", + "owner_type": class_1.type_, + "owner_level": class_1.level, + "owner_eids": [class_1.eid], + "is_trial": False, + "nof_seats": 10, + "nof_free_seats": 10, + "nof_occupied_seats": 0, + "extra_seats": 0, + "product_eid": product_1_eid, + }, + { + "uuid": "11111111-2f05-4211-8eb4-a03b01a047a5", + "valid_from": "2023-01-01", + "valid_to": "2024-01-01", + "created_at": "2023-01-01T00:00:00+00:00", + "owner_type": school_1.type_, + "owner_level": school_1.level, + "owner_eids": [school_1.eid], + "is_trial": False, + "nof_seats": 10, + "nof_free_seats": 10, + "nof_occupied_seats": 0, + "extra_seats": 0, + "product_eid": product_1_eid, + }, + ] + + +@pytest.mark.asyncio +async def test_get_managed_licenses__ok_empty_hierarchies( + client: AsyncClient, + create_license, + teacher_1_hierarchies_authorization_token_no_hierarchies, + teacher_1, + teacher_1_hierarchies, + teacher_2, + product_1_eid, + class_1, + school_1, +): + await create_license( + uuid="11111111-2f05-4211-8eb4-a03b01a047a5", + owner_type=school_1.type_, + owner_level=school_1.level, + owner_eids=[school_1.eid], + ) + + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": []}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token_no_hierarchies}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert json.loads(response._content)["items"] == [ + { + "uuid": "11111111-2f05-4211-8eb4-a03b01a047a5", + "valid_from": "2023-01-01", + "valid_to": "2024-01-01", + "created_at": "2023-01-01T00:00:00+00:00", + "owner_type": school_1.type_, + "owner_level": school_1.level, + "owner_eids": [school_1.eid], + "is_trial": False, + "nof_seats": 10, + "nof_free_seats": 10, + "nof_occupied_seats": 0, + "extra_seats": 0, + "product_eid": product_1_eid, + }, + ] + + +@pytest.mark.asyncio +async def test_get_managed_licenses__error( + client: AsyncClient, + create_license, + teacher_1_hierarchies_authorization_token_no_hierarchies, + teacher_1, + teacher_1_hierarchies, + teacher_2, + product_1_eid, + class_1, + school_1, +): + await create_license( + uuid="11111111-2f05-4211-8eb4-a03b01a047a5", + owner_type=school_1.type_, + owner_level=school_1.level, + owner_eids=[school_1.eid], + ) + + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": None}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token_no_hierarchies}" + }, + ) + assert response.status_code == http_status.HTTP_401_UNAUTHORIZED + + +@pytest.mark.asyncio +@freeze_time("2023-01-10") +async def test_get_valid_licenses__ok_self( + client: AsyncClient, + create_license, + teacher_1_hierarchies_authorization_token, + teacher_1_hierarchies, + class_1, +): + await create_license(uuid="11111111-aea8-4de2-bcca-7b1945285502") + + response = await client.put( + "/v1/hierarchy/licenses/entity-licenses", + json={ + "entity_type": class_1.type_, + "entity_eid": class_1.eid, + "hierarchies": teacher_1_hierarchies, + }, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert json.loads(response._content) == [ + { + "uuid": "11111111-aea8-4de2-bcca-7b1945285502", + "product_eid": "product_1", + "valid_from": "2023-01-01", + "valid_to": "2024-01-01", + "owner_type": class_1.type_, + "owner_level": class_1.level, + "owner_eids": [class_1.eid], + "extra_seats": 0, + "nof_seats": 10, + "nof_free_seats": 10, + "nof_occupied_seats": 0, + "is_trial": False, + } + ] + + +@pytest.mark.asyncio +@freeze_time("2023-01-10") +async def test_get_valid_licenses__ok_parent( + client: AsyncClient, + create_license, + teacher_1_hierarchies_authorization_token, + teacher_1_hierarchies, + class_1, + school_1, +): + await create_license( + uuid="11111111-aea8-4de2-bcca-7b1945285502", + owner_type=school_1.type_, + owner_level=school_1.level, + owner_eids=[school_1.eid], + ) + + response = await client.put( + "/v1/hierarchy/licenses/entity-licenses", + json={ + "entity_type": class_1.type_, + "entity_eid": class_1.eid, + "hierarchies": teacher_1_hierarchies, + }, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert json.loads(response._content) == [ + { + "uuid": "11111111-aea8-4de2-bcca-7b1945285502", + "product_eid": "product_1", + "valid_from": "2023-01-01", + "valid_to": "2024-01-01", + "owner_type": school_1.type_, + "owner_level": school_1.level, + "owner_eids": [school_1.eid], + "nof_seats": 10, + "extra_seats": 0, + "nof_free_seats": 10, + "nof_occupied_seats": 0, + "is_trial": False, + } + ] + + +@pytest.mark.asyncio +@freeze_time("2023-01-10") +async def test_get_valid_licenses__ok_all_expired( + client: AsyncClient, + create_license, + teacher_1_hierarchies_authorization_token, + teacher_1_hierarchies, + class_1, +): + await create_license( + uuid="11111111-aea8-4de2-bcca-7b1945285502", + valid_to=datetime.date(2023, 1, 9), + ) + response = await client.put( + "/v1/hierarchy/licenses/entity-licenses", + json={ + "entity_type": class_1.type_, + "entity_eid": class_1.eid, + "hierarchies": teacher_1_hierarchies, + }, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert json.loads(response._content) == [] + + +@pytest.mark.asyncio +@freeze_time("2023-01-10") +async def test_get_valid_licenses__ok_no_free_seats_left( + client: AsyncClient, + create_license, + teacher_1_hierarchies_authorization_token, + teacher_1_hierarchies, + class_1, +): + await create_license(uuid="11111111-aea8-4de2-bcca-7b1945285502", nof_seats=0) + response = await client.put( + "/v1/hierarchy/licenses/entity-licenses", + json={ + "entity_type": class_1.type_, + "entity_eid": class_1.eid, + "hierarchies": teacher_1_hierarchies, + }, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert json.loads(response._content) == [] + + +@pytest.mark.asyncio +@freeze_time("2023-01-10") +async def test_get_valid_licenses__ok_infinite_seats_left( + client: AsyncClient, + create_license, + teacher_1_hierarchies_authorization_token, + teacher_1_hierarchies, + class_1, +): + # test case for 'infinity': nof_seats is -1 + await create_license(uuid="11111111-aea8-4de2-bcca-7b1945285502", nof_seats=-1) + response = await client.put( + "/v1/hierarchy/licenses/entity-licenses", + json={ + "entity_type": class_1.type_, + "entity_eid": class_1.eid, + "hierarchies": teacher_1_hierarchies, + }, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert json.loads(response._content) == [ + { + "uuid": "11111111-aea8-4de2-bcca-7b1945285502", + "product_eid": "product_1", + "valid_from": "2023-01-01", + "valid_to": "2024-01-01", + "owner_type": class_1.type_, + "owner_level": class_1.level, + "owner_eids": [class_1.eid], + "nof_seats": -1, + "extra_seats": 0, + "nof_free_seats": -1, + "nof_occupied_seats": 0, + "is_trial": False, + } + ] + + +@pytest.mark.asyncio +@freeze_time("2023-01-10") +async def test_get_active_license__ok( + client: AsyncClient, + create_license, + teacher_1_hierarchies_authorization_token, + teacher_1_hierarchies, + class_1, + school_1, +): + await create_license( + uuid="11111111-aea8-4de2-bcca-7b1945285502", + owner_type=school_1.type_, + owner_level=school_1.level, + owner_eids=[school_1.eid], + ) + await create_license( + uuid="22222222-aea8-4de2-bcca-7b1945285502", + ) + response = await client.put( + "/v1/hierarchy/licenses/entity-license", + json={ + "entity_type": class_1.type_, + "entity_eid": class_1.eid, + "hierarchies": teacher_1_hierarchies, + }, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert json.loads(response._content) == { + "uuid": "22222222-aea8-4de2-bcca-7b1945285502", + "product_eid": "product_1", + "valid_from": "2023-01-01", + "valid_to": "2024-01-01", + "owner_type": class_1.type_, + "owner_level": class_1.level, + "owner_eids": [class_1.eid], + "nof_seats": 10, + "nof_free_seats": 10, + "nof_occupied_seats": 0, + "extra_seats": 0, + "is_trial": False, + } + + +@pytest.mark.asyncio +@freeze_time("2023-01-10") +async def test_get_active_license__ok_no_result( + client: AsyncClient, + create_license, + teacher_1_hierarchies_authorization_token, + teacher_1_hierarchies, + class_1, +): + await create_license( + uuid="11111111-aea8-4de2-bcca-7b1945285502", + valid_from=datetime.date(2023, 1, 1), + valid_to=datetime.date(2023, 1, 2), + ), + await create_license( + uuid="22222222-aea8-4de2-bcca-7b1945285502", + valid_from=datetime.date(2023, 1, 1), + valid_to=datetime.date(2024, 1, 2), + nof_seats=0, + ) + response = await client.put( + "/v1/hierarchy/licenses/entity-license", + json={ + "entity_type": class_1.type_, + "entity_eid": class_1.eid, + "hierarchies": teacher_1_hierarchies, + }, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert json.loads(response._content) is None diff --git a/tests/integration/test_license.py b/tests/integration/test_license.py new file mode 100644 index 0000000..de046e7 --- /dev/null +++ b/tests/integration/test_license.py @@ -0,0 +1,51 @@ +import json + +import pytest +from freezegun import freeze_time +from httpx import AsyncClient +from fastapi import status as http_status + + +@pytest.mark.asyncio +@freeze_time("2023-01-10") +async def test_get_managed_license_by_uuid__ok( + client: AsyncClient, + create_license, + teacher_1_hierarchies_authorization_token, + teacher_1, + teacher_1_hierarchies, + teacher_2, + product_1_eid, + class_1, + school_1, +): + await create_license( + uuid="11111111-2f05-4211-8eb4-a03b01a047a5", + owner_type=school_1.type_, + owner_level=school_1.level, + owner_eids=[school_1.eid], + ), + + response = await client.post( + "/v1/hierarchy/licenses/11111111-2f05-4211-8eb4-a03b01a047a5", + json={"hierarchies": teacher_1_hierarchies}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert json.loads(response._content) == { + "uuid": "11111111-2f05-4211-8eb4-a03b01a047a5", + "valid_from": "2023-01-01", + "valid_to": "2024-01-01", + "created_at": "2023-01-01T00:00:00+00:00", + "owner_type": school_1.type_, + "owner_level": school_1.level, + "owner_eids": [school_1.eid], + "is_trial": False, + "nof_seats": 10, + "nof_free_seats": 10, + "nof_occupied_seats": 0, + "extra_seats": 0, + "product_eid": product_1_eid, + } diff --git a/tests/integration/test_licenses_query_order_by.py b/tests/integration/test_licenses_query_order_by.py new file mode 100644 index 0000000..760a7b0 --- /dev/null +++ b/tests/integration/test_licenses_query_order_by.py @@ -0,0 +1,77 @@ +import json +from typing import Tuple + +from httpx import AsyncClient +from fastapi import status as http_status + +import pytest + + +@pytest.mark.asyncio +async def test_admin_order_by_uuid_asc__ok( + client: AsyncClient, licenses_route_admin: Tuple, create_many_licenses_with_seats +): + await create_many_licenses_with_seats(10) + _, route, token, _ = licenses_route_admin + response = await client.get( + f"{route}?order_by=uuid", + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + assert [i_["uuid"] for i_ in json.loads(response._content)["items"]][:2] == [ + "00000001-1111-1111-1111-111111111111", + "00000002-1111-1111-1111-111111111111", + ] + + +@pytest.mark.asyncio +async def test_admin_get_licenses_order_by_uuid_desc__ok( + client: AsyncClient, licenses_route_admin: Tuple, create_many_licenses_with_seats +): + await create_many_licenses_with_seats(10) + _, route, token, _ = licenses_route_admin + response = await client.get( + f"{route}?order_by=-uuid", + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + assert [i_["uuid"] for i_ in json.loads(response._content)["items"]][:2] == [ + "00000010-1111-1111-1111-111111111111", + "00000009-1111-1111-1111-111111111111", + ] + + +@pytest.mark.asyncio +async def test_order_by_uuid_asc__ok( + client: AsyncClient, licenses_route: Tuple, create_many_licenses_with_seats +): + await create_many_licenses_with_seats(10) + _, route, token, hierarchies = licenses_route + response = await client.post( + f"{route}?order_by=uuid", + json={"hierarchies": hierarchies}, + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + assert [i_["uuid"] for i_ in json.loads(response._content)["items"]][:2] == [ + "00000001-1111-1111-1111-111111111111", + "00000002-1111-1111-1111-111111111111", + ] + + +@pytest.mark.asyncio +async def test_get_licenses_order_by_uuid_desc__ok( + client: AsyncClient, licenses_route: Tuple, create_many_licenses_with_seats +): + await create_many_licenses_with_seats(10) + _, route, token, hierarchies = licenses_route + response = await client.post( + f"{route}?order_by=-uuid", + json={"hierarchies": hierarchies}, + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + assert [i_["uuid"] for i_ in json.loads(response._content)["items"]][:2] == [ + "00000010-1111-1111-1111-111111111111", + "00000009-1111-1111-1111-111111111111", + ] diff --git a/tests/integration/test_licenses_query_paginate.py b/tests/integration/test_licenses_query_paginate.py new file mode 100644 index 0000000..d77703b --- /dev/null +++ b/tests/integration/test_licenses_query_paginate.py @@ -0,0 +1,143 @@ +import json +from typing import Tuple + +from httpx import AsyncClient +from fastapi import status as http_status + +import pytest + +from services.licensing.main import ROUTE_PREFIX + + +@pytest.mark.asyncio +async def test_paginate__ok( + client: AsyncClient, licenses_route: Tuple, create_many_licenses_with_seats +): + await create_many_licenses_with_seats(10) + _, route, token, hierarchies = licenses_route + response = await client.post( + f"{route}?order_by=uuid&page=1&size=3", + json={"hierarchies": hierarchies}, + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + assert [i_["uuid"] for i_ in json.loads(response._content)["items"]] == [ + "00000001-1111-1111-1111-111111111111", + "00000002-1111-1111-1111-111111111111", + "00000003-1111-1111-1111-111111111111", + ] + + response = await client.post( + f"{route}?order_by=uuid&page=1&size=4", + json={"hierarchies": hierarchies}, + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + assert [i_["uuid"] for i_ in json.loads(response._content)["items"]] == [ + "00000001-1111-1111-1111-111111111111", + "00000002-1111-1111-1111-111111111111", + "00000003-1111-1111-1111-111111111111", + "00000004-1111-1111-1111-111111111111", + ] + + response = await client.post( + f"{route}?order_by=uuid&page=3&size=2", + json={"hierarchies": hierarchies}, + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + assert [i_["uuid"] for i_ in json.loads(response._content)["items"]] == [ + "00000005-1111-1111-1111-111111111111", + "00000006-1111-1111-1111-111111111111", + ] + + +@pytest.mark.asyncio +async def test_paginate_full__ok( + client: AsyncClient, licenses_route: Tuple, create_many_licenses_with_seats +): + await create_many_licenses_with_seats(10) + _, route, token, hierarchies = licenses_route + response = await client.post( + f"{route}?order_by=uuid&page=3&size=3", + json={"hierarchies": hierarchies}, + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + result = json.loads(response._content) + assert result["total"] == 10 + assert result["page"] == 3 + assert result["size"] == 3 + assert result["pages"] == 4 + assert result["links"] == { + "first": f"{route}?order_by=uuid&size=3&page=1", + "last": f"{route}?order_by=uuid&size=3&page=4", + "self": f"{route}?order_by=uuid&page=3&size=3", + "next": f"{route}?order_by=uuid&size=3&page=4", + "prev": f"{route}?order_by=uuid&size=3&page=2", + } + + +@pytest.mark.asyncio +async def test_admin_paginate__ok( + client: AsyncClient, licenses_route_admin: Tuple, create_many_licenses_with_seats +): + await create_many_licenses_with_seats(10) + _, route, token, _ = licenses_route_admin + response = await client.get( + f"{route}?order_by=uuid&page=1&size=3", + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + assert [i_["uuid"] for i_ in json.loads(response._content)["items"]] == [ + "00000001-1111-1111-1111-111111111111", + "00000002-1111-1111-1111-111111111111", + "00000003-1111-1111-1111-111111111111", + ] + + response = await client.get( + f"{route}?order_by=uuid&page=1&size=4", + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + assert [i_["uuid"] for i_ in json.loads(response._content)["items"]] == [ + "00000001-1111-1111-1111-111111111111", + "00000002-1111-1111-1111-111111111111", + "00000003-1111-1111-1111-111111111111", + "00000004-1111-1111-1111-111111111111", + ] + + response = await client.get( + f"{route}?order_by=uuid&page=3&size=2", + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + assert [i_["uuid"] for i_ in json.loads(response._content)["items"]] == [ + "00000005-1111-1111-1111-111111111111", + "00000006-1111-1111-1111-111111111111", + ] + + +@pytest.mark.asyncio +async def test_admin_paginate_full__ok( + client: AsyncClient, licenses_route_admin: Tuple, create_many_licenses_with_seats +): + await create_many_licenses_with_seats(10) + _, route, token, _ = licenses_route_admin + response = await client.get( + f"{route}?order_by=uuid&page=3&size=3", + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + result = json.loads(response._content) + assert result["total"] == 10 + assert result["page"] == 3 + assert result["size"] == 3 + assert result["pages"] == 4 + assert result["links"] == { + "first": f"{route}?order_by=uuid&size=3&page=1", + "last": f"{route}?order_by=uuid&size=3&page=4", + "self": f"{route}?order_by=uuid&page=3&size=3", + "next": f"{route}?order_by=uuid&size=3&page=4", + "prev": f"{route}?order_by=uuid&size=3&page=2", + } diff --git a/tests/integration/test_member.py b/tests/integration/test_member.py new file mode 100644 index 0000000..9e1d67f --- /dev/null +++ b/tests/integration/test_member.py @@ -0,0 +1,206 @@ +import json +import pytest + +from copy import deepcopy +from fastapi import status as http_status +from freezegun import freeze_time +from httpx import AsyncClient + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + ("additional_payload", "valid_from", "valid_to"), + [ + pytest.param({}, "2023-01-01", "2023-02-26", id="default-duration"), + pytest.param({"duration_weeks": 1}, "2023-01-01", "2023-01-08", id="1-week"), + ], +) +@freeze_time("2023-01-01") +async def test_create_trial_license__ok( + client: AsyncClient, + teacher_1, + teacher_1_hierarchies, + teacher_1_memberships, + teacher_1_memberships_authorization_token, + teacher_1_hierarchies_authorization_token, + teacher_1_trial_payload, + additional_payload, + valid_from, + valid_to, +): + """ + Yes, purchase a license! + """ + payload = deepcopy(teacher_1_trial_payload) | additional_payload + payload["memberships"] = teacher_1_memberships + response = await client.post( + "/v1/member/licenses/trial", + json=payload, + headers={ + "Authorization": f"Bearer {teacher_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_201_CREATED + license_data = json.loads(response._content) + license_uuid = license_data["uuid"] + assert license_data == { + "product_eid": teacher_1_trial_payload["product_eid"], + "is_trial": True, + "uuid": license_uuid, + "valid_from": valid_from, + "valid_to": valid_to, + "owner_level": teacher_1_trial_payload["owner_level"], + "owner_type": teacher_1_trial_payload["owner_type"], + "nof_seats": 50, + "nof_free_seats": 50, + "nof_occupied_seats": 0, + "extra_seats": 0, + } + # ok. we should have a license in the DB! + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": teacher_1_hierarchies}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + licenses = json.loads(response._content)["items"] + assert len(licenses) == 1 + assert "created_at" in licenses[0] + licenses[0].pop("created_at") + assert licenses[0] == { + "is_trial": True, + "nof_seats": teacher_1_trial_payload["nof_seats"], + "nof_free_seats": teacher_1_trial_payload["nof_seats"], + "nof_occupied_seats": 0, + "extra_seats": 0, + "owner_eids": [teacher_1_trial_payload["owner_eid"]], + "owner_level": teacher_1_trial_payload["owner_level"], + "owner_type": teacher_1_trial_payload["owner_type"], + "product_eid": teacher_1_trial_payload["product_eid"], + "uuid": license_uuid, + "valid_from": valid_from, + "valid_to": valid_to, + } + + +@pytest.mark.asyncio +@freeze_time("2023-01-01") +async def test_create_trial_licenses__nok( + client: AsyncClient, + teacher_1_hierarchies, + teacher_1_memberships, + teacher_1_memberships_authorization_token, + teacher_1_hierarchies_authorization_token, + teacher_1_trial_payload, +): + """ + Yes, purchase a license! + """ + payload = deepcopy(teacher_1_trial_payload) + payload["memberships"] = teacher_1_memberships + response = await client.post( + "/v1/member/licenses/trial", + json=payload, + headers={ + "Authorization": f"Bearer {teacher_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_201_CREATED + + # try to create second trial license with same duration + response_2 = await client.post( + "/v1/member/licenses/trial", + json=payload, + headers={ + "Authorization": f"Bearer {teacher_1_memberships_authorization_token}" + }, + ) + assert response_2.status_code == http_status.HTTP_409_CONFLICT + + # try to create second trial license with different duration + response_3 = await client.post( + "/v1/member/licenses/trial", + json=payload | {"duration_weeks": 1}, + headers={ + "Authorization": f"Bearer {teacher_1_memberships_authorization_token}" + }, + ) + assert response_3.status_code == http_status.HTTP_409_CONFLICT + + # ok. we should have only one license in the DB! + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": teacher_1_hierarchies}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + licenses = json.loads(response._content)["items"] + assert len(licenses) == 1 + + +@pytest.mark.asyncio +@freeze_time("2023-01-10") +async def test_get_available_licenses__ok( + client: AsyncClient, + create_license, + teacher_1_memberships_authorization_token, + teacher_1_memberships, + class_1, + class_2, +): + await create_license( + uuid="11111111-aea8-4de2-bcca-7b1945285502", + owner_type=class_1.type_, + owner_level=class_1.level, + owner_eids=[class_1.eid], + ) + await create_license( + uuid="22222222-aea8-4de2-bcca-7b1945285502", + owner_type=class_2.type_, + owner_level=class_2.level, + owner_eids=[class_2.eid], + ) + + response = await client.post( + "/v1/member/licenses?order_by=uuid", + json={ + "memberships": teacher_1_memberships, + }, + headers={ + "Authorization": f"Bearer {teacher_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert len(json.loads(response._content)["items"]) == 2 + assert json.loads(response._content)["items"] == [ + { + "uuid": "11111111-aea8-4de2-bcca-7b1945285502", + "valid_from": "2023-01-01", + "valid_to": "2024-01-01", + "owner_type": class_1.type_, + "owner_level": class_1.level, + "owner_eids": [class_1.eid], + "is_trial": False, + "nof_seats": 10, + "nof_free_seats": 10, + "nof_occupied_seats": 0, + "extra_seats": 0, + "product_eid": "product_1", + }, + { + "uuid": "22222222-aea8-4de2-bcca-7b1945285502", + "valid_from": "2023-01-01", + "valid_to": "2024-01-01", + "owner_type": class_2.type_, + "owner_level": class_2.level, + "owner_eids": [class_2.eid], + "is_trial": False, + "nof_seats": 10, + "nof_free_seats": 10, + "nof_occupied_seats": 0, + "extra_seats": 0, + "product_eid": "product_1", + }, + ] diff --git a/tests/integration/test_member_redeem.py b/tests/integration/test_member_redeem.py new file mode 100644 index 0000000..7be1acd --- /dev/null +++ b/tests/integration/test_member_redeem.py @@ -0,0 +1,537 @@ +import datetime +import json + +from httpx import AsyncClient +from fastapi import status as http_status +from freezegun import freeze_time + +import pytest + +from services.licensing import settings +from services.licensing.custom_types import SeatStatus +from services.licensing.tokens import get_expiration_timestamp +from tests.integration.conftest import check_license_service_token + + +# +# redeeming tests +# + + +@pytest.mark.asyncio +@freeze_time("2023-01-01") +async def test_redeem_license__200_ok_one_product( + client: AsyncClient, + create_license, + student_1_class_1_memberships_authorization_token, + student_1_class_1_memberships, + teacher_1_hierarchies_authorization_token, + product_1_eid, + student_1, + teacher_1_hierarchies, +): + """License redeeming ok, seat gets occupied""" + await create_license(uuid="22222222-aea8-4de2-bcca-7b1945285502") + + response = await client.post( + "/v1/member/permissions", + json={"memberships": student_1_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_1_class_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert check_license_service_token(json.loads(response._content)) == { + "hierarchy_provider_uri": "http://example_hierarchy_provider.com", + "exp": get_expiration_timestamp(settings.permissions_token_livetime_secs), + "iss": settings.licensing_service_url, + "sub": student_1.eid, + "accessible_products": [product_1_eid], + } + + # check seats in db + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": teacher_1_hierarchies}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + licenses = json.loads(response._content)["items"] + assert len(licenses) == 1 + assert licenses[0]["nof_occupied_seats"] == 1 + assert ( + licenses[0]["nof_seats"] - licenses[0]["nof_occupied_seats"] + == licenses[0]["nof_free_seats"] + ) + + +@pytest.mark.asyncio +async def test_redeem_license__200_ok_one_product_two_times( + client: AsyncClient, + create_license, + student_1_class_1_memberships_authorization_token, + student_1_class_1_memberships, + teacher_1_hierarchies_authorization_token, + product_1_eid, + teacher_1_hierarchies, +): + """License redeeming ok, seat is already occupied""" + this_year: int = datetime.datetime.now().year + await create_license( + uuid="22222222-aea8-4de2-bcca-7b1945285502", + valid_from=datetime.date(this_year, 1, 1), + valid_to=datetime.date(this_year + 1, 1, 1), + ) + + # todo: another duplication case? + await client.post( + "/v1/member/permissions", + json={"memberships": student_1_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_1_class_1_memberships_authorization_token}" + }, + ) + response = await client.post( + "/v1/member/permissions", + json={"memberships": student_1_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_1_class_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert check_license_service_token(json.loads(response._content))[ + "accessible_products" + ] == [product_1_eid] + + # check seats in db + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": teacher_1_hierarchies}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + licenses = json.loads(response._content)["items"] + assert len(licenses) == 1 + assert licenses[0]["nof_occupied_seats"] == 1 + assert ( + licenses[0]["nof_seats"] - licenses[0]["nof_occupied_seats"] + == licenses[0]["nof_free_seats"] + ) + + +@pytest.mark.asyncio +async def test_redeem_license__200_ok_two_products( + client: AsyncClient, + create_license, + student_1_class_1_memberships_authorization_token, + student_1_class_1_memberships, + teacher_1_hierarchies_authorization_token, + product_1_eid, + product_2_eid, + teacher_1_hierarchies, +): + """License redeeming ok, seat is occupied""" + this_year: int = datetime.datetime.now().year + await create_license( + uuid="11111111-aea8-4de2-bcca-7b1945285502", + valid_from=datetime.date(this_year, 1, 1), + valid_to=datetime.date(this_year + 1, 1, 1), + ) + await create_license( + uuid="22222222-aea8-4de2-bcca-7b1945285502", + product_eid=product_2_eid, + valid_from=datetime.date(this_year, 1, 1), + valid_to=datetime.date(this_year + 1, 1, 1), + ) + + response = await client.post( + "/v1/member/permissions", + json={"memberships": student_1_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_1_class_1_memberships_authorization_token}" + }, + ) + + assert response.status_code == http_status.HTTP_200_OK + assert set( + check_license_service_token(json.loads(response._content))[ + "accessible_products" + ] + ) == { + product_1_eid, + product_2_eid, + } + + # check seats in db + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": teacher_1_hierarchies}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + licenses = json.loads(response._content)["items"] + assert len(licenses) == 2 + assert licenses[0]["nof_occupied_seats"] == 1 + assert ( + licenses[0]["nof_seats"] - licenses[0]["nof_occupied_seats"] + == licenses[0]["nof_free_seats"] + ) + assert licenses[1]["nof_occupied_seats"] == 1 + assert ( + licenses[1]["nof_seats"] - licenses[1]["nof_occupied_seats"] + == licenses[1]["nof_free_seats"] + ) + + +@pytest.mark.asyncio +@freeze_time("2023-01-01") +async def test_redeem_license__200_ok_no_products__expired_license( + client: AsyncClient, + create_license, + student_1_class_1_memberships_authorization_token, + student_1_class_1_memberships, + teacher_1_hierarchies_authorization_token, + teacher_1_hierarchies, +): + """ + License cannot be redeemed, because it has expired. + """ + await create_license( + uuid="22222222-aea8-4de2-bcca-7b1945285502", + valid_from=datetime.date(2000, 1, 1), + valid_to=datetime.date(2022, 12, 31), + ) + + response = await client.post( + "/v1/member/permissions", + json={"memberships": student_1_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_1_class_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert ( + check_license_service_token(json.loads(response._content))[ + "accessible_products" + ] + == [] + ) + + # check seats in db + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": teacher_1_hierarchies}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + licenses = json.loads(response._content)["items"] + assert len(licenses) == 1 + assert licenses[0]["nof_occupied_seats"] == 0 + assert licenses[0]["nof_seats"] == licenses[0]["nof_free_seats"] + + +@pytest.mark.asyncio +@freeze_time("2023-01-01") +async def test_redeem_license__200_ok_no_products__seat_expired( + client: AsyncClient, + create_license, + update_license, + student_1_class_1_memberships_authorization_token, + student_1_class_1_memberships, + teacher_1_hierarchies_authorization_token, + product_1_eid, + teacher_1_hierarchies, +): + """ + License cannot be redeemed, because it has expired, but + a seat already has been occupied. + """ + license_uuid = "22222222-aea8-4de2-bcca-7b1945285502" + await create_license( + uuid=license_uuid, + valid_from=datetime.date(2000, 1, 1), + valid_to=datetime.date(2023, 1, 1), + ) + + response = await client.post( + "/v1/member/permissions", + json={"memberships": student_1_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_1_class_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert check_license_service_token(json.loads(response._content))[ + "accessible_products" + ] == [product_1_eid] + + # check seats in db + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": teacher_1_hierarchies}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + licenses = json.loads(response._content)["items"] + assert len(licenses) == 1 + assert licenses[0]["nof_occupied_seats"] == 1 + assert ( + licenses[0]["nof_seats"] - licenses[0]["nof_occupied_seats"] + == licenses[0]["nof_free_seats"] + ) + + # expire license ... + await update_license(license_uuid, valid_to=datetime.date(2022, 1, 1)) + response = await client.post( + "/v1/member/permissions", + json={"memberships": student_1_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_1_class_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert ( + check_license_service_token(json.loads(response._content))[ + "accessible_products" + ] + == [] + ) + # check seats in db + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": teacher_1_hierarchies}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + licenses = json.loads(response._content)["items"] + assert len(licenses) == 1 + assert licenses[0]["nof_occupied_seats"] == 0 + assert licenses[0]["nof_seats"] == licenses[0]["nof_free_seats"] + + +@pytest.mark.asyncio +async def test_redeem_license__200_ok_no_products__seat_no_member( + client: AsyncClient, + create_license, + product_1_eid, + student_1_class_1_memberships_authorization_token, + student_1_class_1_memberships, + student_1_class_2_memberships_authorization_token, + student_1_class_2_memberships, + teacher_1_hierarchies_authorization_token, + teacher_1_hierarchies, +): + """ + License cannot be redeemed, because student is no longer member, but + a seat already has been occupied. + """ + this_year: int = datetime.datetime.now().year + await create_license( + uuid="22222222-aea8-4de2-bcca-7b1945285502", + valid_from=datetime.date(this_year, 1, 1), + valid_to=datetime.date(this_year + 1, 1, 1), + ) + response = await client.post( + "/v1/member/permissions", + json={"memberships": student_1_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_1_class_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert check_license_service_token(json.loads(response._content))[ + "accessible_products" + ] == [product_1_eid] + + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": teacher_1_hierarchies}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + licenses = json.loads(response._content)["items"] + assert len(licenses) == 1 + assert licenses[0]["nof_occupied_seats"] == 1 + assert ( + licenses[0]["nof_seats"] - licenses[0]["nof_occupied_seats"] + == licenses[0]["nof_free_seats"] + ) + + # student1 is no longer in class 1, but class2! + response = await client.post( + "/v1/member/permissions", + json={"memberships": student_1_class_2_memberships}, + headers={ + "Authorization": f"Bearer {student_1_class_2_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert ( + check_license_service_token(json.loads(response._content))[ + "accessible_products" + ] + == [] + ) + # check seats in db + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": teacher_1_hierarchies}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + licenses = json.loads(response._content)["items"] + assert len(licenses) == 1 + assert licenses[0]["nof_occupied_seats"] == 0 + assert licenses[0]["nof_seats"] == licenses[0]["nof_free_seats"] + + +@pytest.mark.asyncio +@freeze_time("2023-01-01") +async def test_redeem_license__200_ok_no_overredeeming( + client: AsyncClient, + create_license, + student_2, + student_1_class_1_memberships_authorization_token, + student_1_class_1_memberships, + student_2_class_1_memberships_authorization_token, + student_2_class_1_memberships, + teacher_1_hierarchies_authorization_token, + teacher_1_hierarchies, +): + """ + License redeeming ok, seat gets occupied, but 'overredeeming is prohibited + """ + await create_license(uuid="22222222-aea8-4de2-bcca-7b1945285502", nof_seats=1) + + response = await client.post( + "/v1/member/permissions", + json={"memberships": student_1_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_1_class_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + + # student2 should not be able to redeem + response = await client.post( + "/v1/member/permissions", + json={"memberships": student_2_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_2_class_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert check_license_service_token(json.loads(response._content)) == { + "hierarchy_provider_uri": "http://example_hierarchy_provider.com", + "exp": get_expiration_timestamp(settings.permissions_token_livetime_secs), + "iss": settings.licensing_service_url, + "sub": student_2.eid, + "accessible_products": [], + } + + # check seats in db + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": teacher_1_hierarchies}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + licenses = json.loads(response._content)["items"] + assert len(licenses) == 1 + assert licenses[0]["nof_occupied_seats"] == 1 + assert ( + licenses[0]["nof_seats"] - licenses[0]["nof_occupied_seats"] + == licenses[0]["nof_free_seats"] + ) + + +@pytest.mark.asyncio +@freeze_time("2023-01-01") +async def test_redeem_license__200_ok_no_overredeeming_extra_seats( + client: AsyncClient, + create_license, + product_1_eid, + student_2, + student_3, + student_1_class_1_memberships_authorization_token, + student_1_class_1_memberships, + student_2_class_1_memberships_authorization_token, + student_2_class_1_memberships, + student_3_class_1_memberships_authorization_token, + student_3_class_1_memberships, + teacher_1_hierarchies_authorization_token, + teacher_1_hierarchies, +): + """ + License redeeming ok, seat gets occupied, extra seats is being used, + but 'overredeeming is prohibited + """ + await create_license( + uuid="22222222-aea8-4de2-bcca-7b1945285502", nof_seats=1, extra_seats=1 + ) + + # ok student 1 has redeemed successfully ... + await client.post( + "/v1/member/permissions", + json={"memberships": student_1_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_1_class_1_memberships_authorization_token}" + }, + ) + + # student2 should be able to redeem (and use extra seats!) + response = await client.post( + "/v1/member/permissions", + json={"memberships": student_2_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_2_class_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert check_license_service_token(json.loads(response._content)) == { + "hierarchy_provider_uri": "http://example_hierarchy_provider.com", + "exp": get_expiration_timestamp(settings.permissions_token_livetime_secs), + "iss": settings.licensing_service_url, + "sub": student_2.eid, + "accessible_products": [product_1_eid], + } + + # student3 should NOT be able to redeem + response = await client.post( + "/v1/member/permissions", + json={"memberships": student_3_class_1_memberships}, + headers={ + "Authorization": f"Bearer {student_3_class_1_memberships_authorization_token}" + }, + ) + assert response.status_code == http_status.HTTP_200_OK + assert check_license_service_token(json.loads(response._content)) == { + "hierarchy_provider_uri": "http://example_hierarchy_provider.com", + "exp": get_expiration_timestamp(settings.permissions_token_livetime_secs), + "iss": settings.licensing_service_url, + "sub": student_3.eid, + "accessible_products": [], + } + + # check seats in db + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": teacher_1_hierarchies}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + licenses = json.loads(response._content)["items"] + assert len(licenses) == 1 + assert licenses[0]["nof_occupied_seats"] == 2 + assert licenses[0]["nof_seats"] == 1 + assert licenses[0]["nof_free_seats"] == 0 diff --git a/tests/integration/test_order.py b/tests/integration/test_order.py new file mode 100644 index 0000000..aaab897 --- /dev/null +++ b/tests/integration/test_order.py @@ -0,0 +1,131 @@ +# +# purchase license tests +# + + +import pytest +from fastapi import status as http_status +from httpx import AsyncClient + + +import json + + +@pytest.mark.asyncio +async def test_purchase_license__ok( + client: AsyncClient, + teacher_1, + teacher_1_hierarchies, + teacher_1_shop_authorization_token, + teacher_1_hierarchies_authorization_token, + teacher_1_purchase_payload, +): + """ + Yes, purchase a license! + """ + response = await client.post( + "/v1/order/licenses", + json={}, + headers={"Authorization": f"Bearer {teacher_1_shop_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_201_CREATED + + license_data = json.loads(response._content) + license_uuid = license_data["uuid"] + assert license_data == { + "product_eid": teacher_1_purchase_payload["product_eid"], + "is_trial": False, + "uuid": license_uuid, + "owner_level": teacher_1_purchase_payload["owner_level"], + "owner_type": teacher_1_purchase_payload["owner_type"], + "valid_from": teacher_1_purchase_payload["valid_from"], + "valid_to": teacher_1_purchase_payload["valid_to"], + "nof_seats": teacher_1_purchase_payload["nof_seats"], + "nof_free_seats": teacher_1_purchase_payload["nof_seats"], + "nof_occupied_seats": 0, + "extra_seats": teacher_1_purchase_payload["extra_seats"], + } + + # ok. we should have a license in the DB! + response = await client.post( + "/v1/hierarchy/licenses", + json={"hierarchies": teacher_1_hierarchies}, + headers={ + "Authorization": f"Bearer {teacher_1_hierarchies_authorization_token}" + }, + ) + licenses = json.loads(response._content)["items"] + assert len(licenses) == 1 + # drop fuzzy parameter `created_at` from assert + assert "created_at" in licenses[0] + licenses[0].pop("created_at") + # then check payload + assert licenses[0] == { + "is_trial": False, + "nof_seats": teacher_1_purchase_payload["nof_seats"], + "nof_free_seats": teacher_1_purchase_payload["nof_seats"], + "nof_occupied_seats": 0, + "extra_seats": teacher_1_purchase_payload["extra_seats"], + "owner_eids": teacher_1_purchase_payload["owner_eids"], + "owner_level": teacher_1_purchase_payload["owner_level"], + "owner_type": teacher_1_purchase_payload["owner_type"], + "product_eid": teacher_1_purchase_payload["product_eid"], + "uuid": license_uuid, + "valid_from": teacher_1_purchase_payload["valid_from"], + "valid_to": teacher_1_purchase_payload["valid_to"], + } + + +@pytest.mark.asyncio +async def test_purchase_license__409_license_purchased_twice( + client: AsyncClient, + teacher_1_shop_authorization_token, + teacher_1_purchase_payload, +): + """ + Try to purchase the same license twice + """ + response = await client.post( + "/v1/order/licenses", + json={}, + headers={"Authorization": f"Bearer {teacher_1_shop_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_201_CREATED + response = await client.post( + "/v1/order/licenses", + json={}, + headers={"Authorization": f"Bearer {teacher_1_shop_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_409_CONFLICT + assert json.loads(response._content) == { + "detail": ( + "License purchase failed: A license for at least one of the " + "entered owner EIDs already exists" + ) + } + + +@pytest.mark.asyncio +async def test_upgrade_license__ok( + create_license, + client: AsyncClient, + teacher_1_shop_authorization_token, +): + """ + Successfully upgrade a license (increase the number of seats). + """ + + # init a license with 10 seats + await create_license(id=1, uuid="11111111-2222-1111-1111-111111111111") + + # upgrade the license to 100 seats + response = await client.put( + "/v1/order/licenses/11111111-2222-1111-1111-111111111111", + data={}, + headers={"Authorization": f"Bearer {teacher_1_shop_authorization_token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK + + updated_license_data = json.loads(response.read()) + assert updated_license_data["uuid"] == "11111111-2222-1111-1111-111111111111" + assert updated_license_data["nof_seats"] == 100 diff --git a/tests/integration/test_status.py b/tests/integration/test_status.py new file mode 100644 index 0000000..9bfa9e8 --- /dev/null +++ b/tests/integration/test_status.py @@ -0,0 +1,33 @@ +import pytest +from httpx import AsyncClient + + +@pytest.mark.asyncio +async def test_livez__ok(client: AsyncClient): + response = await client.get("/livez") + assert response.status_code == 200 + + +@pytest.mark.asyncio +async def test_status__ok(client: AsyncClient): + response = await client.get("/status") + assert response.status_code == 200 + + +@pytest.mark.asyncio +async def test_status__not_ok(mocker, client: AsyncClient): + mocker.patch( + "services.licensing.business.service.LicensingService.is_db_alive", + return_value=False, + ) + response = await client.get("/status") + assert response.status_code == 500 + assert response.json() == {"detail": "Database not reachable"} + + +@pytest.mark.asyncio +async def test_version__ok(client: AsyncClient): + response = await client.get("/version") + assert response.status_code == 200 + assert response.json()["debug"] is True + assert response.json()["segment"] == "loc00" diff --git a/tests/unit/__init__.py b/tests/unit/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/unit/conftest.py b/tests/unit/conftest.py new file mode 100644 index 0000000..85671e9 --- /dev/null +++ b/tests/unit/conftest.py @@ -0,0 +1,51 @@ +import asyncio +import pytest +import structlog +from httpx import AsyncClient, ASGITransport +from typing import Any, Generator, Tuple +from fastapi import Depends, FastAPI, status as http_status + +from services.licensing.authorization import authorize_with_token + + +logger = structlog.stdlib.get_logger(__name__) + + +@pytest.fixture(scope="session") +def event_loop(request) -> Generator: # noqa: indirect usage + loop = asyncio.get_event_loop_policy().new_event_loop() + yield loop + loop.close() + + +async def start_app(): + app = FastAPI() + return app + + +@pytest.fixture +async def app() -> FastAPI: + yield await start_app() + + +@pytest.fixture +async def client(app: FastAPI) -> AsyncClient: + from services.licensing.main import http_exception_handler + from services.licensing.exceptions import HTTPException + + app.add_exception_handler(HTTPException, http_exception_handler) + + @app.get( + "/route-that-expects-authorization", + status_code=http_status.HTTP_200_OK, + ) + async def route_1( + data: Tuple[str, str, None] = Depends(authorize_with_token), + ) -> Any: + return {"message": "Hi"} + + transport = ASGITransport(app=app) + async with AsyncClient( + transport=transport, base_url="http://test-server" + ) as client: + yield client diff --git a/tests/unit/test_authorization.py b/tests/unit/test_authorization.py new file mode 100644 index 0000000..7117e81 --- /dev/null +++ b/tests/unit/test_authorization.py @@ -0,0 +1,160 @@ +import datetime +import json +import pytest +from unittest.mock import MagicMock +from httpx import AsyncClient +from fastapi import status as http_status + + +from tests.conftest import ( + create_token, + NOT_EXISTING_KID, + HIERARCHY_PROVIDER_KID, + INVALID_SIGNATURE_KEY_KID, +) + + +# +# authorization tests ... +# + + +@pytest.mark.asyncio +async def test_authorization__401_invalid_auth_header(client: AsyncClient, caplog): + """Authorization fails because of no token""" + headers = {"Authorization": ""} + response = await client.get("/route-that-expects-authorization", headers=headers) + assert response.status_code == http_status.HTTP_401_UNAUTHORIZED + assert caplog.records[0].levelname == "INFO" + assert "API failure" in caplog.text + assert "Invalid or missing authorization header" in caplog.text + assert json.loads(response._content) == { + "detail": "Invalid or missing authorization header" + } + + +@pytest.mark.asyncio +async def test_authorization__401_invalid_schema(client: AsyncClient, caplog): + """Authorization fails because of invalid token schema""" + headers = {"Authorization": "something invalid"} + response = await client.get("/route-that-expects-authorization", headers=headers) + assert response.status_code == http_status.HTTP_401_UNAUTHORIZED + assert caplog.records[0].levelname == "INFO" + assert "API failure" in caplog.text + assert "Invalid authorization scheme" in caplog.text + assert json.loads(response._content) == {"detail": "Invalid authorization scheme"} + + +@pytest.mark.asyncio +async def test_authorization__401_invalid_token(client: AsyncClient, caplog): + """Authorization fails because of invalid""" + headers = {"Authorization": "Bearer"} + response = await client.get("/route-that-expects-authorization", headers=headers) + assert response.status_code == http_status.HTTP_401_UNAUTHORIZED + assert caplog.records[0].levelname == "INFO" + assert "API failure" in caplog.text + assert "Invalid or missing authorization header" in caplog.text + assert json.loads(response._content) == { + "detail": "Invalid or missing authorization header" + } + + +@pytest.mark.asyncio +async def test_authorization__401_kid_not_found(client: AsyncClient, caplog): + """ + Requested hierarchy provider is not registered for authorization + """ + token = create_token( + NOT_EXISTING_KID, + "some-issuer", + ( + datetime.datetime.now(tz=datetime.timezone.utc) + + datetime.timedelta(seconds=100) + ).timestamp(), + "some-subject", + ) + + response = await client.get( + "/route-that-expects-authorization", + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_401_UNAUTHORIZED + assert caplog.records[0].levelname == "INFO" + assert "API failure" in caplog.text + assert "Key ID (kid) cannot be identified" in caplog.text + assert json.loads(response._content) == { + "detail": f"Key ID (kid) cannot be identified: {{'kid': '{NOT_EXISTING_KID}'}}" + } + + +@pytest.mark.asyncio +async def test_authorization__401_token_expired(client: AsyncClient, caplog): + """ + token is expired + """ + token = create_token( + HIERARCHY_PROVIDER_KID, + "some-issuer", + ( + datetime.datetime.now(tz=datetime.timezone.utc) + - datetime.timedelta(seconds=100) + ).timestamp(), + "some-subject", + ) + + response = await client.get( + "/route-that-expects-authorization", + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_401_UNAUTHORIZED + assert caplog.records[0].levelname == "INFO" + assert "API failure" in caplog.text + assert "JWT token validation failed" in caplog.text + assert "Expired" in json.loads(response._content)["detail"] + + +@pytest.mark.asyncio +async def test_authorization__401_invalid_signature(client: AsyncClient, caplog): + """ + token invalid signature + """ + token = create_token( + INVALID_SIGNATURE_KEY_KID, + "some-issuer", + ( + datetime.datetime.now(tz=datetime.timezone.utc) + + datetime.timedelta(seconds=100) + ).timestamp(), + "some-subject", + ) + + response = await client.get( + "/route-that-expects-authorization", + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_401_UNAUTHORIZED + assert caplog.records[0].levelname == "INFO" + assert "API failure" in caplog.text + assert "JWS token signature validation failed" in caplog.text + + +@pytest.mark.asyncio +async def test_authorization__ok(client: AsyncClient, mocker: MagicMock): + """ + token valid + """ + token = create_token( + HIERARCHY_PROVIDER_KID, + "some-issuer", + ( + datetime.datetime.now(tz=datetime.timezone.utc) + + datetime.timedelta(seconds=100) + ).timestamp(), + "some-subject", + ) + + response = await client.get( + "/route-that-expects-authorization", + headers={"Authorization": f"Bearer {token}"}, + ) + assert response.status_code == http_status.HTTP_200_OK diff --git a/tests/unit/test_bettermarks_export.py b/tests/unit/test_bettermarks_export.py new file mode 100644 index 0000000..5464514 --- /dev/null +++ b/tests/unit/test_bettermarks_export.py @@ -0,0 +1,28 @@ +import datetime +from freezegun import freeze_time +from fastapi import status + + +@freeze_time("2023-01-01") +async def test_export_event_do_nothing(): + from services.licensing.export.bettermarks_export import export_event + + assert ( + await export_event("DummyType", datetime.datetime.now(), {"a": "test"}) is True + ) + + +async def test_export_event_http_exception(mocker): + from services.licensing.export.bettermarks_export import export_event + from services.licensing.exceptions import HTTPException + + mocker.patch("services.licensing.settings.bm_data_event_api_url", "anything") + mocker.patch( + "services.licensing.export.bettermarks_export.post_request", + side_effect=HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, message="MockedError" + ), + ) + assert ( + await export_event("DummyType", datetime.datetime.now(), {"a": "test"}) is False + ) diff --git a/tests/unit/test_free_seats.py b/tests/unit/test_free_seats.py new file mode 100644 index 0000000..a4d764b --- /dev/null +++ b/tests/unit/test_free_seats.py @@ -0,0 +1,26 @@ +from services.licensing.constants import INFINITE_INT +from services.licensing.utils import nof_free_seats + + +def test_nof_free_seats__ok(): + assert nof_free_seats(100, 10, 99) == 11 + assert nof_free_seats(100, 10, 100) == 10 + assert nof_free_seats(100, 10, 101) == 9 + assert nof_free_seats(100, 10, 110) == 0 + assert nof_free_seats(100, 10, 111) == 0 + + assert nof_free_seats(-1, 10, 99) == INFINITE_INT + assert nof_free_seats(-1, 10, 999) == INFINITE_INT + assert nof_free_seats(-1, 10, 999999) == INFINITE_INT + assert nof_free_seats(-1, 10, 9999999) == INFINITE_INT + + assert nof_free_seats(100, 0, 99) == 1 + assert nof_free_seats(100, 0, 100) == 0 + assert nof_free_seats(100, 0, 101) == 0 + assert nof_free_seats(100, 0, 110) == 0 + assert nof_free_seats(100, 0, 111) == 0 + + assert nof_free_seats(-1, 0, 99) == INFINITE_INT + assert nof_free_seats(-1, 0, 999) == INFINITE_INT + assert nof_free_seats(-1, 0, 99999) == INFINITE_INT + assert nof_free_seats(-1, 0, 9999999) == INFINITE_INT diff --git a/tests/unit/test_hierarchies.py b/tests/unit/test_hierarchies.py new file mode 100644 index 0000000..6741600 --- /dev/null +++ b/tests/unit/test_hierarchies.py @@ -0,0 +1,146 @@ +import pytest + +from services.licensing.custom_types import Entity +from services.licensing.hierarchies import parent_entities, get_ancestors + + +@pytest.fixture +def hierarchies_payload(): + return [ + { + "eid": "cc1", + "type": "cc", + "name": "cc1", + "level": 3, + "children": [ + { + "eid": "cc1_s1", + "type": "s", + "name": "cc1_s1", + "level": 2, + "children": [ + { + "eid": "cc1_s1_k1", + "type": "c", + "name": "cc1_s1_k1", + "level": 1, + }, + { + "eid": "cc1_s1_k2", + "type": "c", + "name": "cc1_s1_k2", + "level": 1, + }, + ], + }, + { + "eid": "cc1_s2", + "type": "s", + "name": "cc1_s2", + "level": 2, + "children": [ + { + "eid": "cc1_s2_k1", + "type": "c", + "name": "cc1_s2_k1", + "level": 1, + }, + { + "eid": "cc1_s2_k2", + "type": "c", + "name": "cc1_s2_k2", + "level": 1, + }, + ], + }, + ], + } + ] + + +def test_parent_entities__ok(hierarchies_payload): + hierarchies = parent_entities(hierarchies_payload, {}) + assert hierarchies == { + Entity( + eid="cc1_s1_k1", type_="c", level=1, name="cc1_s1_k1", is_member_of=False + ): [ + Entity(eid="cc1_s1", type_="s", level=2, name="cc1_s1", is_member_of=False) + ], + Entity( + eid="cc1_s1_k2", type_="c", level=1, name="cc1_s1_k2", is_member_of=False + ): [Entity(eid="cc1_s1", type_="s", level=2, name="cc1", is_member_of=False)], + Entity( + eid="cc1_s2_k1", type_="c", level=1, name="cc1_s2_k1", is_member_of=False + ): [ + Entity(eid="cc1_s2", type_="s", level=2, name="cc1_s2", is_member_of=False) + ], + Entity( + eid="cc1_s2_k2", type_="c", level=1, name="cc1_s2_k2", is_member_of=False + ): [ + Entity(eid="cc1_s2", type_="s", level=2, name="cc1_s2", is_member_of=False) + ], + Entity(eid="cc1_s1", type_="s", level=2, name="cc1_s1", is_member_of=False): [ + Entity(eid="cc1", type_="cc", level=3, name="cc1", is_member_of=False) + ], + Entity(eid="cc1_s2", type_="s", level=2, name="cc1_s2", is_member_of=False): [ + Entity(eid="cc1", type_="cc", level=3, name="cc1", is_member_of=False) + ], + } + + +def test_ancestors_for_level3__ok(hierarchies_payload): + hierarchies = parent_entities(hierarchies_payload, {}) + ancestors = get_ancestors("cc", "cc1", hierarchies) + assert ancestors == [] + + +def test_ancestors_for_level2_1__ok(hierarchies_payload): + hierarchies = parent_entities(hierarchies_payload, {}) + ancestors = get_ancestors("s", "cc1_s1", hierarchies) + assert ancestors == [ + Entity(eid="cc1", type_="cc", level=3, name="cc1", is_member_of=False) + ] + + +def test_ancestors_for_level2_2__ok(hierarchies_payload): + hierarchies = parent_entities(hierarchies_payload, {}) + ancestors = get_ancestors("s", "cc1_s2", hierarchies) + assert ancestors == [ + Entity(eid="cc1", type_="cc", level=3, name="cc1", is_member_of=False) + ] + + +def test_ancestors_for_level1_11__ok(hierarchies_payload): + hierarchies = parent_entities(hierarchies_payload, {}) + ancestors = get_ancestors("c", "cc1_s1_k1", hierarchies) + assert ancestors == [ + Entity(eid="cc1_s1", type_="s", level=2, name="cc1_s1", is_member_of=False), + Entity(eid="cc1", type_="cc", level=3, name="cc1", is_member_of=False), + ] + + +def test_ancestors_for_level1_12__ok(hierarchies_payload): + hierarchies = parent_entities(hierarchies_payload, {}) + ancestors = get_ancestors("c", "cc1_s1_k2", hierarchies) + assert ancestors == [ + Entity(eid="cc1_s1", type_="s", level=2, name="cc1_s1", is_member_of=False), + Entity(eid="cc1", type_="cc", level=3, name="cc1", is_member_of=False), + ] + + +def test_ancestors_for_level1_21__ok(hierarchies_payload): + hierarchies = parent_entities(hierarchies_payload, {}) + ancestors = get_ancestors("c", "cc1_s2_k1", hierarchies) + assert ancestors == [ + Entity(eid="cc1_s2", type_="s", level=2, name="cc1_s2", is_member_of=False), + Entity(eid="cc1", type_="cc", level=3, name="cc1", is_member_of=False), + ] + + +def test_ancestors_for_level1_22__ok(hierarchies_payload): + hierarchies = parent_entities(hierarchies_payload, {}) + ancestors = get_ancestors("c", "cc1_s2_k2", hierarchies) + assert ancestors == [ + Entity(eid="cc1_s2", type_="s", level=2, name="cc1_s2", is_member_of=False), + Entity(eid="cc1", type_="cc", level=3, name="cc1", is_member_of=False), + ] diff --git a/tests/unit/test_order_by.py b/tests/unit/test_order_by.py new file mode 100644 index 0000000..b01de22 --- /dev/null +++ b/tests/unit/test_order_by.py @@ -0,0 +1,31 @@ +import pytest + +from services.licensing.custom_types import OrderByDirection +from services.licensing.order_by import get_order_by_fields +from services.licensing.exceptions import HTTPException + + +def test_order_by__ok(): + assert get_order_by_fields("-id.field1.-field2", ["id", "field1", "field2"]) == [ + ("id", OrderByDirection.DESC), + ("field1", OrderByDirection.ASC), + ("field2", OrderByDirection.DESC), + ] + + +def test_order_by_empty__ok(): + assert get_order_by_fields("", ["id", "field1", "field2"]) == [] + + +def test_order_by_none__ok(): + assert get_order_by_fields(None, ["id", "field1", "field2"]) == [] + + +def test_order_by__not_allowed(): + with pytest.raises(HTTPException): + get_order_by_fields("-id.field1.-field2.-field3", ["id", "field1", "field2"]) + + +def test_order_by__illegal(): + with pytest.raises(HTTPException): + get_order_by_fields("some:illegl-clause,given", ["id", "field1", "field2"]) diff --git a/tests/unit/test_pacts.py b/tests/unit/test_pacts.py new file mode 100644 index 0000000..4590027 --- /dev/null +++ b/tests/unit/test_pacts.py @@ -0,0 +1,1757 @@ +import pytest + +from services.licensing.pacts import ( + build_regex_paths_map, + extract_schema, + extract_schema_name, + example_openapi_response, + validate_request_body, +) + + +@pytest.fixture() +def openapi_schema(): + return { + "openapi": "3.1.0", + "info": {"title": "Licensing API", "version": "1.0.0"}, + "paths": { + "/admin/licenses": { + "get": { + "tags": ["Admin"], + "summary": "Get Licenses", + "description": 'The "get licenses" route for admins\n:param product_eid\n:param owner_type\n:param owner_level\n:param owner_eid\n:param manager_eid\n:param valid_from\n:param valid_to\n:param is_trial\n:param is_valid\n:param created_at\n:param redeemed_seats: \'percentage of occupied seats - filter\n:param order_by something like "-id.valid_from.-manager_eid.-product_eid\n:param token_data\n:return: a JSON object (usually a list of licenses)', + "operationId": "get_licenses_admin_licenses_get", + "parameters": [ + { + "required": False, + "schema": {"type": "string", "title": "Product Eid"}, + "name": "product_eid", + "in": "query", + }, + { + "required": False, + "schema": {"type": "string", "title": "Owner Type"}, + "name": "owner_type", + "in": "query", + }, + { + "required": False, + "schema": {"type": "integer", "title": "Owner Level"}, + "name": "owner_level", + "in": "query", + }, + { + "required": False, + "schema": {"type": "string", "title": "Owner Eid"}, + "name": "owner_eid", + "in": "query", + }, + { + "required": False, + "schema": {"type": "string", "title": "Manager Eid"}, + "name": "manager_eid", + "in": "query", + }, + { + "required": False, + "schema": { + "type": "string", + "format": "date", + "title": "Valid From", + }, + "name": "valid_from", + "in": "query", + }, + { + "required": False, + "schema": { + "type": "string", + "format": "date", + "title": "Valid To", + }, + "name": "valid_to", + "in": "query", + }, + { + "required": False, + "schema": {"type": "boolean", "title": "Is Trial"}, + "name": "is_trial", + "in": "query", + }, + { + "required": False, + "schema": {"type": "boolean", "title": "Is Valid"}, + "name": "is_valid", + "in": "query", + }, + { + "required": False, + "schema": { + "type": "string", + "format": "date", + "title": "Created At", + }, + "name": "created_at", + "in": "query", + }, + { + "required": False, + "schema": {"type": "integer", "title": "Redeemed Seats"}, + "name": "redeemed_seats", + "in": "query", + }, + { + "required": False, + "schema": {"type": "string", "title": "Order By"}, + "name": "order_by", + "in": "query", + }, + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomizedPage_LicenseCompleteSchema_" + } + } + }, + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + }, + }, + "security": [{"CustomHTTPBearer": []}], + }, + "post": { + "tags": ["Admin"], + "summary": "Create License", + "description": "The 'create a license' route for use in administrative procedures.\n:param data: entity attributes dictionary for a license creation\n:param _: info gotten from ordering token (not used, but necessary)\n:returns: some params of the created license or some error\n message in case of an error", + "operationId": "create_license_admin_licenses_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LicenseCreateSchema" + } + } + }, + "required": True, + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LicenseCreatedSchema" + } + } + }, + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + }, + }, + "security": [{"CustomHTTPBearer": []}], + }, + }, + "/admin/licenses/{license_uuid}": { + "get": { + "tags": ["Admin"], + "summary": "Get License", + "description": 'The "get details for a specific license" route for admins\n:param license_uuid: the `uuid` of the `License` entity to be selected as the result\n:param token_data: data gotten from admin token\n:return: a JSON object representing the license details', + "operationId": "get_license_admin_licenses__license_uuid__get", + "parameters": [ + { + "required": True, + "schema": {"type": "string", "title": "License Uuid"}, + "name": "license_uuid", + "in": "path", + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LicenseCompleteSchema" + } + } + }, + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + }, + }, + "security": [{"CustomHTTPBearer": []}], + }, + "put": { + "tags": ["Admin"], + "summary": "Update License", + "description": "The update license route for admins.\n:param license_uuid: the `uuid` of the license to modify\n:param license_update: the data to update the license with\n:param token_data: data gotten from admin token", + "operationId": "update_license_admin_licenses__license_uuid__put", + "parameters": [ + { + "required": True, + "schema": {"type": "string", "title": "License Uuid"}, + "name": "license_uuid", + "in": "path", + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LicenseUpdateSchema" + } + } + }, + "required": True, + }, + "responses": { + "200": { + "description": "Successful Response", + "content": {"application/json": {"schema": {}}}, + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + }, + }, + "security": [{"CustomHTTPBearer": []}], + }, + "delete": { + "tags": ["Admin"], + "summary": "Delete License", + "operationId": "delete_license_admin_licenses__license_uuid__delete", + "parameters": [ + { + "required": True, + "schema": {"type": "string", "title": "License Uuid"}, + "name": "license_uuid", + "in": "path", + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": {"application/json": {"schema": {}}}, + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + }, + }, + "security": [{"CustomHTTPBearer": []}], + }, + }, + "/status": { + "get": { + "tags": ["Status"], + "summary": "Get Status", + "operationId": "get_status_status_get", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "title": "Response Get Status Status Get", + } + } + }, + } + }, + } + }, + "/member/permissions": { + "post": { + "tags": ["Member"], + "summary": "Get Accessible Products", + "description": 'The "permission" route for a given user\n:param data: a membership data structure used to get the permissions for\n:param token_data: info gotten from memberships token\n:return: a JSON object (usually a list of accessible product EIDs)', + "operationId": "get_accessible_products_member_permissions_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MembershipsSchema" + } + } + }, + "required": True, + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "string", + "title": "Response Get Accessible Products Member Permissions Post", + } + } + }, + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + }, + }, + "security": [{"CustomHTTPBearer": []}], + } + }, + "/member/licenses/trial": { + "post": { + "tags": ["Member"], + "summary": "Create Trial License", + "description": "The 'create a trial license route\n:param data: payload\n:param token_data: info gotten from memberships token\n:returns: some params of the created license or some error\n message in case of an error", + "operationId": "create_trial_license_member_licenses_trial_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LicenseTrialSchema" + } + } + }, + "required": True, + }, + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LicenseCreatedSchema" + } + } + }, + }, + "409": { + "description": "Duplicate Error", + "content": { + "application/json": { + "example": { + "detail": "Trial license creation failed: A trial license for this entity already exists" + } + } + }, + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + }, + }, + "security": [{"CustomHTTPBearer": []}], + } + }, + "/member/licenses": { + "post": { + "tags": ["Member"], + "summary": "Get Available Licenses", + "description": 'Route for getting all licenses that are available in the entities a given user is\nmember of.\n\n### Example Bearer Token structure\n```\n{\n "iss": "https://acc.bettermarks.com/ucm",\n "exp": 1701799583.393268,\n "sub": "3@DE_bettermarks",\n "iat": 1701798983.393283,\n "jti": "77ab5b01-83a0-44f3-a086-d25162aae84e",\n "hashes": {\n "memberships": {\n "alg": "SHA256",\n "hash": "4c8c51dd16136b9905908bc3b6b938067e002e4345679c950abf86a3e2ce05ce"\n }\n }\n }\n```', + "operationId": "get_available_licenses_member_licenses_post", + "parameters": [ + { + "required": False, + "schema": {"type": "string", "title": "Order By"}, + "name": "order_by", + "in": "query", + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MembershipsSchema" + } + } + }, + "required": True, + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomizedPage_LicenseAvailableSchema_" + } + } + }, + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + }, + }, + "security": [{"CustomHTTPBearer": []}], + } + }, + "/hierarchy/licenses": { + "post": { + "tags": ["Hierarchy"], + "summary": "Get Managed Licenses", + "description": 'All licenses in the hierarchy of a given user that they are managing / have created.\n\n### Example Bearer Token structure\n```\n{\n "iss": "https://acc.bettermarks.com/ucm",\n "exp": 1701789570.99798,\n "sub": "12@EN_test",\n "iat": 1701788970.99799,\n "jti": "2b47ca46-28b9-4b8d-bd1c-a893acb9de29",\n "hashes": {\n "memberships": {\n "alg": "SHA256",\n "hash": "86f8b8313c183b3f9ee74b9c042ee440b894f690e9f6308de3da63fd4a6b8"\n }\n }\n}\n```', + "operationId": "get_managed_licenses_hierarchy_licenses_post", + "parameters": [ + { + "required": False, + "schema": {"type": "string", "title": "Order By"}, + "name": "order_by", + "in": "query", + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HierarchiesSchema" + } + } + }, + "required": True, + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomizedPage_LicenseManagedSchema_" + } + } + }, + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + }, + }, + "security": [{"CustomHTTPBearer": []}], + } + }, + "/hierarchy/licenses/{license_id}": { + "post": { + "tags": ["Hierarchy"], + "summary": "Get Managed License By Uuid", + "description": 'Route for getting all the licenses in the hierarchy of a given user that they have\ncreated.\n\n### Example Bearer Token structure\n```\n{\n "iss": "https://acc.bettermarks.com/ucm",\n "exp": 1701789570.99798,\n "sub": "12@EN_test",\n "iat": 1701788970.99799,\n "jti": "2b47ca46-28b9-4b8d-bd1c-a893acb9de29",\n "hashes": {\n "memberships": {\n "alg": "SHA256",\n "hash": "86f8b8313c183b3f9ee74b9c042ee440b894f690e9f6308de3da63fd4a6b8"\n }\n }\n}\n```', + "operationId": "get_managed_license_by_uuid_hierarchy_licenses__license_id__post", + "parameters": [ + { + "required": True, + "schema": {"type": "string", "title": "License Id"}, + "name": "license_id", + "in": "path", + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HierarchiesSchema" + } + } + }, + "required": True, + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LicenseManagedSchema" + } + } + }, + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + }, + }, + "security": [{"CustomHTTPBearer": []}], + } + }, + "/hierarchy/licenses/entity-license": { + "put": { + "tags": ["Hierarchy"], + "summary": "Get Active License For Entity", + "description": 'The "active license for entity" route for a given entity, that is\nthe license taken from the set of \'valid\' licenses (see above route\n`/{entity_type}/{entity_eid}/valid-licenses`), that has the\n- minimum owner level\n- (for same owner level) maximum number of free seats\n\n### Example Bearer Token structure\n```\n{\n "iss": "https://acc.bettermarks.com/ucm",\n "exp": 1701789570.99798,\n "sub": "12@EN_test",\n "iat": 1701788970.99799,\n "jti": "2b47ca46-28b9-4b8d-bd1c-a893acb9de29",\n "hashes": {\n "memberships": {\n "alg": "SHA256",\n "hash": "86f8b8313c183b3f9ee74b9c042ee440b894f690e9f6308de3da63fd4a6b8"\n }\n }\n}\n```', + "operationId": "get_active_license_for_entity_hierarchy_licenses_entity_license_put", + "requestBody": { + "content": { + "application/json": { + "schema": {"$ref": "#/components/schemas/EntitySchema"} + } + }, + "required": True, + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LicenseActiveSchema" + } + } + }, + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + }, + }, + "security": [{"CustomHTTPBearer": []}], + } + }, + "/hierarchy/licenses/entity-licenses": { + "put": { + "tags": ["Hierarchy"], + "summary": "Get Licenses For Entity", + "description": "The \"valid licenses for entity\" route for a given entity, that is\n'all licenses, that are currently not expired and that are owned by\nsome ancestor of a given entity or by the entity itself'.", + "operationId": "get_licenses_for_entity_hierarchy_licenses_entity_licenses_put", + "requestBody": { + "content": { + "application/json": { + "schema": {"$ref": "#/components/schemas/EntitySchema"} + } + }, + "required": True, + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/LicenseValidSchema" + }, + "type": "array", + "title": "Response Get Licenses For Entity Hierarchy Licenses Entity Licenses Put", + } + } + }, + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + }, + }, + "security": [{"CustomHTTPBearer": []}], + } + }, + "/order/licenses": { + "post": { + "tags": ["Order"], + "summary": "Purchase License", + "description": "The 'purchase a license' route\n:param token_data: info gotten from ordering token\n:returns: some params of the created license or some error\n message in case of an error", + "operationId": "purchase_license_order_licenses_post", + "responses": { + "201": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LicenseCreatedSchema" + } + } + }, + } + }, + "security": [{"CustomHTTPBearer": []}], + } + }, + }, + "components": { + "schemas": { + "CustomizedPage_LicenseAvailableSchema_": { + "properties": { + "items": { + "items": { + "$ref": "#/components/schemas/LicenseAvailableSchema" + }, + "type": "array", + "title": "Items", + }, + "total": {"type": "integer", "minimum": 0.0, "title": "Total"}, + "page": {"type": "integer", "minimum": 1.0, "title": "Page"}, + "size": {"type": "integer", "minimum": 1.0, "title": "Size"}, + "pages": {"type": "integer", "minimum": 0.0, "title": "Pages"}, + "links": {"$ref": "#/components/schemas/Links"}, + }, + "type": "object", + "required": ["items", "links"], + "title": "CustomizedPage[LicenseAvailableSchema]", + }, + "CustomizedPage_LicenseCompleteSchema_": { + "properties": { + "items": { + "items": { + "$ref": "#/components/schemas/LicenseCompleteSchema" + }, + "type": "array", + "title": "Items", + }, + "total": {"type": "integer", "minimum": 0.0, "title": "Total"}, + "page": {"type": "integer", "minimum": 1.0, "title": "Page"}, + "size": {"type": "integer", "minimum": 1.0, "title": "Size"}, + "pages": {"type": "integer", "minimum": 0.0, "title": "Pages"}, + "links": {"$ref": "#/components/schemas/Links"}, + }, + "type": "object", + "required": ["items", "links"], + "title": "CustomizedPage[LicenseCompleteSchema]", + }, + "CustomizedPage_LicenseManagedSchema_": { + "properties": { + "items": { + "items": { + "$ref": "#/components/schemas/LicenseManagedSchema" + }, + "type": "array", + "title": "Items", + }, + "total": {"type": "integer", "minimum": 0.0, "title": "Total"}, + "page": {"type": "integer", "minimum": 1.0, "title": "Page"}, + "size": {"type": "integer", "minimum": 1.0, "title": "Size"}, + "pages": {"type": "integer", "minimum": 0.0, "title": "Pages"}, + "links": {"$ref": "#/components/schemas/Links"}, + }, + "type": "object", + "required": ["items", "links"], + "title": "CustomizedPage[LicenseManagedSchema]", + }, + "EntitySchema": { + "properties": { + "entity_type": {"type": "string", "title": "Entity Type"}, + "entity_eid": {"type": "string", "title": "Entity Eid"}, + "hierarchies": { + "items": {}, + "type": "array", + "title": "Hierarchies", + }, + }, + "type": "object", + "required": ["entity_type", "entity_eid", "hierarchies"], + "title": "EntitySchema", + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": {"$ref": "#/components/schemas/ValidationError"}, + "type": "array", + "title": "Detail", + } + }, + "type": "object", + "title": "HTTPValidationError", + }, + "HierarchiesSchema": { + "properties": {}, + "type": "object", + "title": "HierarchiesSchema", + }, + "LicenseActiveSchema": { + "properties": { + "uuid": {"type": "string", "format": "uuid", "title": "Uuid"}, + "product_eid": {"type": "string", "title": "Product Eid"}, + "owner_level": {"type": "integer", "title": "Owner Level"}, + "owner_type": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "title": "Owner Type", + }, + "nof_seats": { + "type": "integer", + "minimum": -1.0, + "title": "Nof Seats", + "description": "The absolute number of seats for a license that can be occupied. `-1` means unlimited.", + }, + "nof_free_seats": { + "type": "integer", + "minimum": -1.0, + "title": "Nof Free Seats", + "description": "The absolute number of free seats for a license. `-1` means unlimited.", + }, + "nof_occupied_seats": { + "type": "integer", + "title": "Nof Occupied Seats", + }, + "extra_seats": { + "type": "integer", + "minimum": 0.0, + "title": "Extra Seats", + "description": "Extra seats make it possible to “overbook” the license seats of a license.", + "default": 0, + }, + "is_trial": {"type": "boolean", "title": "Is Trial"}, + "valid_from": { + "type": "string", + "format": "date", + "title": "Valid From", + }, + "valid_to": { + "type": "string", + "format": "date", + "title": "Valid To", + }, + "owner_eids": { + "items": {"type": "string"}, + "type": "array", + "title": "Owner Eids", + }, + }, + "type": "object", + "required": [ + "uuid", + "product_eid", + "owner_level", + "owner_type", + "nof_seats", + "nof_free_seats", + "nof_occupied_seats", + "is_trial", + "valid_from", + "valid_to", + "owner_eids", + ], + "title": "LicenseActiveSchema", + }, + "LicenseAvailableSchema": { + "properties": { + "uuid": {"type": "string", "format": "uuid", "title": "Uuid"}, + "product_eid": {"type": "string", "title": "Product Eid"}, + "owner_level": {"type": "integer", "title": "Owner Level"}, + "owner_type": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "title": "Owner Type", + }, + "nof_seats": { + "type": "integer", + "minimum": -1.0, + "title": "Nof Seats", + "description": "The absolute number of seats for a license that can be occupied. `-1` means unlimited.", + }, + "nof_free_seats": { + "type": "integer", + "minimum": -1.0, + "title": "Nof Free Seats", + "description": "The absolute number of free seats for a license. `-1` means unlimited.", + }, + "nof_occupied_seats": { + "type": "integer", + "title": "Nof Occupied Seats", + }, + "extra_seats": { + "type": "integer", + "minimum": 0.0, + "title": "Extra Seats", + "description": "Extra seats make it possible to “overbook” the license seats of a license.", + "default": 0, + }, + "is_trial": {"type": "boolean", "title": "Is Trial"}, + "valid_from": { + "type": "string", + "format": "date", + "title": "Valid From", + }, + "valid_to": { + "type": "string", + "format": "date", + "title": "Valid To", + }, + "owner_eids": { + "items": {"type": "string"}, + "type": "array", + "title": "Owner Eids", + }, + "seats": { + "items": {"$ref": "#/components/schemas/SeatSchema"}, + "type": "array", + "title": "Seats", + }, + }, + "type": "object", + "required": [ + "uuid", + "product_eid", + "owner_level", + "owner_type", + "nof_seats", + "nof_free_seats", + "nof_occupied_seats", + "is_trial", + "valid_from", + "valid_to", + "owner_eids", + "seats", + ], + "title": "LicenseAvailableSchema", + }, + "LicenseCompleteSchema": { + "properties": { + "uuid": {"type": "string", "format": "uuid", "title": "Uuid"}, + "product_eid": {"type": "string", "title": "Product Eid"}, + "owner_level": {"type": "integer", "title": "Owner Level"}, + "owner_type": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "title": "Owner Type", + }, + "nof_seats": { + "type": "integer", + "minimum": -1.0, + "title": "Nof Seats", + "description": "The absolute number of seats for a license that can be occupied. `-1` means unlimited.", + }, + "nof_free_seats": { + "type": "integer", + "minimum": -1.0, + "title": "Nof Free Seats", + "description": "The absolute number of free seats for a license. `-1` means unlimited.", + }, + "nof_occupied_seats": { + "type": "integer", + "title": "Nof Occupied Seats", + }, + "extra_seats": { + "type": "integer", + "minimum": 0.0, + "title": "Extra Seats", + "description": "Extra seats make it possible to “overbook” the license seats of a license.", + "default": 0, + }, + "is_trial": {"type": "boolean", "title": "Is Trial"}, + "valid_from": { + "type": "string", + "format": "date", + "title": "Valid From", + }, + "valid_to": { + "type": "string", + "format": "date", + "title": "Valid To", + }, + "id": {"type": "integer", "title": "Id"}, + "manager_eid": {"type": "string", "title": "Manager Eid"}, + "owner_eids": { + "items": {"type": "string"}, + "type": "array", + "title": "Owner Eids", + }, + "notes": {"type": "string", "title": "Notes"}, + "seats": { + "items": {"$ref": "#/components/schemas/SeatSchema"}, + "type": "array", + "title": "Seats", + }, + "released_seats": { + "items": {"$ref": "#/components/schemas/SeatSchema"}, + "type": "array", + "title": "Released Seats", + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At", + }, + "updated_at": { + "type": "string", + "format": "date-time", + "title": "Updated At", + }, + }, + "type": "object", + "required": [ + "uuid", + "product_eid", + "owner_level", + "owner_type", + "nof_seats", + "nof_free_seats", + "nof_occupied_seats", + "is_trial", + "valid_from", + "valid_to", + "id", + "manager_eid", + "owner_eids", + "seats", + "released_seats", + "created_at", + ], + "title": "LicenseCompleteSchema", + }, + "LicenseCreateSchema": { + "properties": { + "owner_level": {"type": "integer", "title": "Owner Level"}, + "owner_type": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "title": "Owner Type", + }, + "nof_seats": { + "type": "integer", + "minimum": -1.0, + "title": "Nof Seats", + "description": "The absolute number of seats for a license that can be occupied. `-1` means unlimited.", + }, + "extra_seats": { + "type": "integer", + "minimum": 0.0, + "title": "Extra Seats", + "description": "Extra seats make it possible to “overbook” the license seats of a license.", + }, + "product_eid": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "title": "Product Eid", + }, + "hierarchy_provider_uri": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "title": "Hierarchy Provider Uri", + }, + "owner_eids": { + "items": { + "type": "string", + "maxLength": 256, + "minLength": 1, + }, + "type": "array", + "title": "Owner Eids", + }, + "valid_from": { + "type": "string", + "format": "date", + "title": "Valid From", + }, + "valid_to": { + "type": "string", + "format": "date", + "title": "Valid To", + }, + "order_id": { + "type": "string", + "maxLength": 36, + "minLength": 0, + "title": "Order Id", + }, + "manager_eid": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "title": "Manager Eid", + }, + "notes": { + "type": "string", + "maxLength": 4096, + "title": "Notes", + }, + }, + "type": "object", + "required": [ + "owner_level", + "owner_type", + "product_eid", + "hierarchy_provider_uri", + "owner_eids", + "valid_from", + "valid_to", + "manager_eid", + ], + "title": "LicenseCreateSchema", + "description": "Admin license creation.", + }, + "LicenseCreatedSchema": { + "properties": { + "uuid": {"type": "string", "format": "uuid", "title": "Uuid"}, + "product_eid": {"type": "string", "title": "Product Eid"}, + "owner_level": {"type": "integer", "title": "Owner Level"}, + "owner_type": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "title": "Owner Type", + }, + "nof_seats": { + "type": "integer", + "minimum": -1.0, + "title": "Nof Seats", + "description": "The absolute number of seats for a license that can be occupied. `-1` means unlimited.", + }, + "nof_free_seats": { + "type": "integer", + "minimum": -1.0, + "title": "Nof Free Seats", + "description": "The absolute number of free seats for a license. `-1` means unlimited.", + }, + "nof_occupied_seats": { + "type": "integer", + "title": "Nof Occupied Seats", + }, + "extra_seats": { + "type": "integer", + "minimum": 0.0, + "title": "Extra Seats", + "description": "Extra seats make it possible to “overbook” the license seats of a license.", + "default": 0, + }, + "is_trial": {"type": "boolean", "title": "Is Trial"}, + "valid_from": { + "type": "string", + "format": "date", + "title": "Valid From", + }, + "valid_to": { + "type": "string", + "format": "date", + "title": "Valid To", + }, + }, + "type": "object", + "required": [ + "uuid", + "product_eid", + "owner_level", + "owner_type", + "nof_seats", + "nof_free_seats", + "nof_occupied_seats", + "is_trial", + "valid_from", + "valid_to", + ], + "title": "LicenseCreatedSchema", + }, + "LicenseManagedSchema": { + "properties": { + "uuid": {"type": "string", "format": "uuid", "title": "Uuid"}, + "product_eid": {"type": "string", "title": "Product Eid"}, + "owner_level": {"type": "integer", "title": "Owner Level"}, + "owner_type": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "title": "Owner Type", + }, + "nof_seats": { + "type": "integer", + "minimum": -1.0, + "title": "Nof Seats", + "description": "The absolute number of seats for a license that can be occupied. `-1` means unlimited.", + }, + "nof_free_seats": { + "type": "integer", + "minimum": -1.0, + "title": "Nof Free Seats", + "description": "The absolute number of free seats for a license. `-1` means unlimited.", + }, + "nof_occupied_seats": { + "type": "integer", + "title": "Nof Occupied Seats", + }, + "extra_seats": { + "type": "integer", + "minimum": 0.0, + "title": "Extra Seats", + "description": "Extra seats make it possible to “overbook” the license seats of a license.", + "default": 0, + }, + "is_trial": {"type": "boolean", "title": "Is Trial"}, + "valid_from": { + "type": "string", + "format": "date", + "title": "Valid From", + }, + "valid_to": { + "type": "string", + "format": "date", + "title": "Valid To", + }, + "owner_eids": { + "items": {"type": "string"}, + "type": "array", + "title": "Owner Eids", + }, + "seats": { + "items": {"$ref": "#/components/schemas/SeatSchema"}, + "type": "array", + "title": "Seats", + }, + "released_seats": { + "items": {"$ref": "#/components/schemas/SeatSchema"}, + "type": "array", + "title": "Released Seats", + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At", + }, + }, + "type": "object", + "required": [ + "uuid", + "product_eid", + "owner_level", + "owner_type", + "nof_seats", + "nof_free_seats", + "nof_occupied_seats", + "is_trial", + "valid_from", + "valid_to", + "owner_eids", + "seats", + "released_seats", + "created_at", + ], + "title": "LicenseManagedSchema", + }, + "LicenseTrialSchema": { + "properties": { + "owner_level": {"type": "integer", "title": "Owner Level"}, + "owner_type": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "title": "Owner Type", + }, + "nof_seats": { + "type": "integer", + "minimum": -1.0, + "title": "Nof Seats", + "description": "The absolute number of seats for a license that can be occupied. `-1` means unlimited.", + }, + "extra_seats": { + "type": "integer", + "minimum": 0.0, + "title": "Extra Seats", + "description": "Extra seats make it possible to “overbook” the license seats of a license.", + }, + "product_eid": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "title": "Product Eid", + }, + "owner_eid": {"type": "string", "title": "Owner Eid"}, + "memberships": { + "items": {}, + "type": "array", + "title": "Memberships", + }, + "duration_weeks": { + "type": "integer", + "title": "Duration Weeks", + }, + }, + "type": "object", + "required": [ + "owner_level", + "owner_type", + "product_eid", + "owner_eid", + "memberships", + ], + "title": "LicenseTrialSchema", + }, + "LicenseUpdateSchema": { + "properties": { + "manager_eid": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "title": "Manager Eid", + }, + "nof_seats": { + "type": "integer", + "minimum": -1.0, + "title": "Nof Seats", + "description": "The absolute number of seats for a license that can be occupied. `-1` means unlimited.", + }, + "extra_seats": { + "type": "integer", + "minimum": 0.0, + "title": "Extra Seats", + "description": "Extra seats make it possible to “overbook” the license seats of a license.", + }, + "valid_from": { + "type": "string", + "format": "date", + "title": "Valid From", + }, + "valid_to": { + "type": "string", + "format": "date", + "title": "Valid To", + }, + }, + "type": "object", + "title": "LicenseUpdateSchema", + "description": "Admin license update.", + }, + "LicenseValidSchema": { + "properties": { + "uuid": {"type": "string", "format": "uuid", "title": "Uuid"}, + "product_eid": {"type": "string", "title": "Product Eid"}, + "owner_level": {"type": "integer", "title": "Owner Level"}, + "owner_type": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "title": "Owner Type", + }, + "nof_seats": { + "type": "integer", + "minimum": -1.0, + "title": "Nof Seats", + "description": "The absolute number of seats for a license that can be occupied. `-1` means unlimited.", + }, + "nof_free_seats": { + "type": "integer", + "minimum": -1.0, + "title": "Nof Free Seats", + "description": "The absolute number of free seats for a license. `-1` means unlimited.", + }, + "nof_occupied_seats": { + "type": "integer", + "title": "Nof Occupied Seats", + }, + "extra_seats": { + "type": "integer", + "minimum": 0.0, + "title": "Extra Seats", + "description": "Extra seats make it possible to “overbook” the license seats of a license.", + "default": 0, + }, + "is_trial": {"type": "boolean", "title": "Is Trial"}, + "valid_from": { + "type": "string", + "format": "date", + "title": "Valid From", + }, + "valid_to": { + "type": "string", + "format": "date", + "title": "Valid To", + }, + "owner_eids": { + "items": {"type": "string"}, + "type": "array", + "title": "Owner Eids", + }, + }, + "type": "object", + "required": [ + "uuid", + "product_eid", + "owner_level", + "owner_type", + "nof_seats", + "nof_free_seats", + "nof_occupied_seats", + "is_trial", + "valid_from", + "valid_to", + "owner_eids", + ], + "title": "LicenseValidSchema", + }, + "Links": { + "properties": { + "first": { + "type": "string", + "title": "First", + "example": "/api/v1/users?limit=1&offset1", + }, + "last": { + "type": "string", + "title": "Last", + "example": "/api/v1/users?limit=1&offset1", + }, + "self": { + "type": "string", + "title": "Self", + "example": "/api/v1/users?limit=1&offset1", + }, + "next": { + "type": "string", + "title": "Next", + "example": "/api/v1/users?limit=1&offset1", + }, + "prev": { + "type": "string", + "title": "Prev", + "example": "/api/v1/users?limit=1&offset1", + }, + }, + "type": "object", + "title": "Links", + }, + "MembershipsSchema": { + "properties": { + "memberships": { + "items": {}, + "type": "array", + "title": "Memberships", + } + }, + "type": "object", + "required": ["memberships"], + "title": "MembershipsSchema", + "examples": [ + { + "memberships": [ + { + "eid": "1@DE_bettermarks", + "name": "Cypress test class 11", + "type": "class", + "level": "1", + } + ] + } + ], + }, + "SeatSchema": { + "properties": { + "user_eid": { + "type": "string", + "maxLength": 256, + "minLength": 1, + "title": "User Eid", + }, + "occupied_at": { + "type": "string", + "format": "date-time", + "title": "Occupied At", + }, + "last_accessed_at": { + "type": "string", + "format": "date-time", + "title": "Last Accessed At", + }, + "is_occupied": {"type": "boolean", "title": "Is Occupied"}, + "status": {"$ref": "#/components/schemas/SeatStatus"}, + }, + "type": "object", + "required": [ + "user_eid", + "occupied_at", + "last_accessed_at", + "is_occupied", + "status", + ], + "title": "SeatSchema", + }, + "SeatStatus": { + "enum": ["ACTIVE", "EXPIRED", "NOT_A_MEMBER"], + "title": "SeatStatus", + "description": "A custom Enum type representing our 'seat status'", + }, + "ValidationError": { + "properties": { + "loc": { + "items": { + "anyOf": [{"type": "string"}, {"type": "integer"}] + }, + "type": "array", + "title": "Location", + }, + "msg": {"type": "string", "title": "Message"}, + "type": {"type": "string", "title": "Error Type"}, + }, + "type": "object", + "required": ["loc", "msg", "type"], + "title": "ValidationError", + }, + }, + "securitySchemes": { + "CustomHTTPBearer": {"type": "http", "scheme": "bearer"} + }, + }, + } + + +@pytest.fixture() +def admin__licenses(): + return { + "items": [ + { + "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "manager_eid": "string", + "product_eid": "string", + "owner_level": 0, + "owner_type": "string", + "nof_seats": 0, + "nof_free_seats": 0, + "nof_occupied_seats": 0, + "extra_seats": 0, + "is_trial": True, + "valid_from": "2023-12-31", + "valid_to": "2023-12-31", + # todo: potential error ["string"] + "owner_eids": "string", + "notes": "string", + "id": 0, + "seats": [ + { + "user_eid": "string", + "occupied_at": "2023-12-31 23:59:59", + "last_accessed_at": "2023-12-31 23:59:59", + "is_occupied": True, + "status": "ACTIVE", + } + ], + "released_seats": [ + { + "user_eid": "string", + "occupied_at": "2023-12-31 23:59:59", + "last_accessed_at": "2023-12-31 23:59:59", + "is_occupied": True, + "status": "ACTIVE", + } + ], + "created_at": "2023-12-31 23:59:59", + "updated_at": "2023-12-31 23:59:59", + } + ], + "total": 0, + "page": 0, + "size": 0, + "pages": 0, + "links": { + "first": "string", + "last": "string", + "self": "string", + "next": "string", + "prev": "string", + }, + } + + +@pytest.fixture() +def admin__licenses__422(): + return { + "detail": [ + { + "loc": [], + "msg": "string", + "type": "string", + }, + ], + } + + +@pytest.fixture() +def admin__licenses__license(): + return { + "uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "product_eid": "string", + "owner_level": 0, + "owner_type": "string", + "nof_seats": 0, + "nof_free_seats": 0, + "nof_occupied_seats": 0, + "extra_seats": 0, + "is_trial": True, + "valid_from": "2023-12-31", + "valid_to": "2023-12-31", + "id": 0, + "manager_eid": "string", + "owner_eids": "string", + "notes": "string", + "seats": [ + { + "user_eid": "string", + "occupied_at": "2023-12-31 23:59:59", + "last_accessed_at": "2023-12-31 23:59:59", + "is_occupied": True, + "status": "ACTIVE", + } + ], + "released_seats": [ + { + "user_eid": "string", + "occupied_at": "2023-12-31 23:59:59", + "last_accessed_at": "2023-12-31 23:59:59", + "is_occupied": True, + "status": "ACTIVE", + } + ], + "created_at": "2023-12-31 23:59:59", + "updated_at": "2023-12-31 23:59:59", + } + + +@pytest.fixture() +def admin__licenses__delete(): + return "string" + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "request_path,request_method,request_status,request_body,exp_status_code,exp_result_fixture", + [ + ("/admin/licenses", "get", 200, None, 200, "admin__licenses"), + ("/admin/licenses", "get", 422, None, 422, "admin__licenses__422"), + ( + "/admin/licenses/license-obj-uuid", + "get", + 200, + None, + 200, + "admin__licenses__license", + ), + ( + "/admin/licenses/license-obj-uuid", + "delete", + 200, + None, + 200, + "admin__licenses__delete", + ), + ], +) +async def test__example_openapi_response__parametrized( + request, + openapi_schema, + request_path, + request_method, + request_status, + request_body, + exp_status_code, + exp_result_fixture, +): + """Test for `get_mock_response_from()` function.""" + result_status_code, result_example = await example_openapi_response( + openapi_schema, request_path, request_method, request_body, request_status + ) + assert result_status_code == exp_status_code + assert result_example == request.getfixturevalue(exp_result_fixture) + + +@pytest.fixture() +def openapi_schema_simple() -> dict: + return { + "paths": { + "/test/path": {"get": {}, "post": {}}, + "/test/path/{parameter}": {"get": {}, "post": {}}, + } + } + + +@pytest.fixture() +def openapi_schema_simple_mapping() -> dict: + return { + "^/test/path$": {"get": {}, "post": {}}, + "^/test/path/[a-zA-Z0-9-_]+$": {"get": {}, "post": {}}, + } + + +def test__build_regex_paths_map__parametrized( + openapi_schema_simple, openapi_schema_simple_mapping +): + """Test for `build_regex_paths()` function.""" + result_mapping = build_regex_paths_map(openapi_schema_simple) + assert result_mapping == openapi_schema_simple_mapping + + +@pytest.mark.parametrize( + "response_schema,exp_raises,exp_result", + [ + ( + {"anyOf": [{"$ref": "$/some/path/expectedResult"}, {"type": "null"}]}, + False, + "expectedResult", + ), + ({"$ref": "$/some/path/expectedResult"}, False, "expectedResult"), + ({"$ref": "expectedResult"}, False, "expectedResult"), + ({"$ref": ""}, False, ""), + ({"test": "key"}, ValueError, None), + ], +) +def test__extract_schema_name__parametrized(response_schema, exp_raises, exp_result): + """Test for `extract_schema_name()` function.""" + if exp_raises: + with pytest.raises(exp_raises): + extract_schema_name(response_schema) + else: + assert extract_schema_name(response_schema) == exp_result + + +@pytest.mark.parametrize( + "response_schema,exp_raises", + [ + ({"$ref": "#/components/schemas/NonExistingSchema"}, ValueError), + ( + {"$ref": "#/components/schemas/CustomizedPage_LicenseAvailableSchema_"}, + False, + ), + ], +) +def test__extract_schema__parametrized(openapi_schema, response_schema, exp_raises): + """Test for `extract_schema()` function.""" + if exp_raises: + with pytest.raises(exp_raises): + extract_schema(openapi_schema, response_schema) + else: + schemas_map, schema_name, schema_dict = extract_schema( + openapi_schema, response_schema + ) + assert schemas_map == openapi_schema["components"]["schemas"] + assert schema_dict == openapi_schema["components"]["schemas"][schema_name] + + +@pytest.mark.parametrize( + "request_path,request_method,request_body,exp_raises", + [ + ( + "/order/licenses", + "post", + {}, + None, + ), + ( + "/order/licenses", + "post", + {"unexpected": "value"}, + ValueError, + ), + ( + "/member/licenses/trial", + "post", + { + "owner_level": 0, + "owner_type": "string", + "nof_seats": 0, + "extra_seats": 0, + "product_eid": "string", + "owner_eid": "string", + "memberships": ["string"], + "duration_weeks": 0, + }, + None, + ), + ( + "/member/licenses/trial", + "post", + { + "owner_level": "0", + "owner_type": "string", + "nof_seats": 0, + "extra_seats": 0, + "product_eid": "string", + "owner_eid": "string", + "memberships": ["string"], + "duration_weeks": 0, + }, + ValueError, + ), + ], +) +def test__validate_request_body__parametrized( + openapi_schema, request_path, request_method, request_body, exp_raises +): + """Test for `validate_request_body()` function.""" + preferred_spec = openapi_schema["paths"][request_path] + if exp_raises: + with pytest.raises(exp_raises): + validate_request_body( + openapi_schema, request_method, request_body, preferred_spec + ) + else: + validate_request_body( + openapi_schema, request_method, request_body, preferred_spec + ) diff --git a/tests/unit/test_service.py b/tests/unit/test_service.py new file mode 100644 index 0000000..f26755e --- /dev/null +++ b/tests/unit/test_service.py @@ -0,0 +1,213 @@ +import pytest +from datetime import datetime, timedelta, timezone +from unittest.mock import AsyncMock +from uuid import UUID + +from services.licensing.business.service import LicensingService +from services.licensing.custom_types import ( + Entity, + Memberships, + SeatStatus, + License, + Seat, +) + + +@pytest.fixture +def licensing_service(): + mock_repository = AsyncMock() + service = LicensingService(licensing_repository=mock_repository) + + return service + + +@pytest.fixture +def memberships(): + return [ + Entity( + eid="1@DE_bettermarks", + type_="school", + level=2, + name="Cypress School 1", + is_member_of=False, + ), + Entity( + eid="2@DE_bettermarks", + type_="class", + level=1, + name="Cypress test class for joining", + is_member_of=False, + ), + Entity( + eid="5@DE_bettermarks", + type_="student", + level=0, + name="NA", + is_member_of=False, + ), + ] + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "occupied_seats, valid_licenses, expected_accessible_products", + [ + # Case 1: No occupied seats, valid licenses available + ( + [], + [ + License( + id=6, + uuid=UUID("b54d5674-f5a7-4c85-9b4b-8a9dc8564a85"), + product_eid="full_access", + hierarchy_provider_uri="https://school.bettermarks.loc/ucm", + manager_eid="4@DE_bettermarks", + owner_type="class", + owner_level=1, + owner_eids=["83@DE_bettermarks"], + valid_from=datetime.now().date(), + valid_to=datetime.now().date() + timedelta(days=30), + nof_seats=10, + nof_free_seats=5, + nof_occupied_seats=5, + extra_seats=0, + is_trial=False, + notes=None, + seats=[], + released_seats=[], + created_at=datetime.now(), + updated_at=datetime.now(), + ) + ], + ["full_access"], + ), + # Case 2: Occupied seat exists, with expired license and disjointed membership + ( + [ + Seat( + id=9, + user_eid="5@DE_bettermarks", + last_accessed_at=datetime.now(timezone.utc), + occupied_at=datetime.now(timezone.utc), + license=License( + id=5, + uuid=UUID("cf9b263a-3b97-4a76-9e6b-5481edce17ac"), + product_eid="full_access", + hierarchy_provider_uri="https://school.bettermarks.loc/ucm", + manager_eid="4@DE_bettermarks", + owner_type="class", + owner_level=1, + owner_eids=["24@DE_bettermarks"], # disjointed membership + valid_from=datetime.now().date() - timedelta(days=60), + valid_to=datetime.now().date() + - timedelta(days=1), # Expired license + nof_seats=15, + nof_free_seats=0, + nof_occupied_seats=15, + extra_seats=0, + is_trial=False, + notes=None, + seats=[], + released_seats=[], + created_at=datetime.now(), + updated_at=datetime.now(), + ), + status=SeatStatus.ACTIVE, # with expired license, still start as active... + is_occupied=True, # ...and occupied + ) + ], + [], + [], + ), + # Case 3: User has two accessible products + ( + [ + Seat( + id=10, + user_eid="5@DE_bettermarks", + last_accessed_at=datetime.now(timezone.utc), + occupied_at=datetime.now(timezone.utc), + license=License( + id=5, + uuid=UUID("cf9b263a-3b97-4a76-9e6b-5481edce17ac"), + product_eid="full_access", + hierarchy_provider_uri="https://school.bettermarks.loc/ucm", + manager_eid="9@DE_bettermarks", + owner_type="class", + owner_level=1, + owner_eids=["2@DE_bettermarks"], + valid_from=datetime.now().date(), + valid_to=datetime.now().date() + timedelta(days=30), + nof_seats=15, + nof_free_seats=0, + nof_occupied_seats=15, + extra_seats=0, + is_trial=False, + notes=None, + seats=[], + released_seats=[], + created_at=datetime.now(), + updated_at=datetime.now(), + ), + status=SeatStatus.ACTIVE, + is_occupied=True, + ) + ], + [ + License( + id=7, + uuid=UUID("b54d5674-f5a7-4c85-9b4b-8a9dc8564a85"), + product_eid="physics_access", + hierarchy_provider_uri="https://school.bettermarks.loc/ucm", + manager_eid="4@DE_bettermarks", + owner_type="school", + owner_level=1, + owner_eids=["1@DE_bettermarks"], + valid_from=datetime.now().date(), + valid_to=datetime.now().date() + timedelta(days=30), + nof_seats=10, + nof_free_seats=10, + nof_occupied_seats=0, + extra_seats=0, + is_trial=False, + notes=None, + seats=[], + released_seats=[], + created_at=datetime.now(), + updated_at=datetime.now(), + ) + ], + ["full_access", "physics_access"], + ), + ], +) +async def test_get_accessible_products( + licensing_service, + memberships, + occupied_seats, + valid_licenses, + expected_accessible_products, +): + licensing_service.licensing_repository.get_occupied_seats = AsyncMock( + return_value=occupied_seats + ) + licensing_service.licensing_repository.get_valid_licenses_for_entities = AsyncMock( + return_value=valid_licenses + ) + licensing_service.licensing_repository.update_seats = AsyncMock() + licensing_service.licensing_repository.create_event_log = AsyncMock() + + result = await licensing_service.get_accessible_products( + hierarchy_provider_uri="https://school.bettermarks.loc/ucm", + user_eid="5@DE_bettermarks", + memberships=memberships, + ) + + assert result == expected_accessible_products + licensing_service.licensing_repository.update_seats.assert_called_once() + # PermissionsRequestedEvent + if not expected_accessible_products: + licensing_service.licensing_repository.create_event_log.assert_called_once() + # SeatCreatedEvent and PermissionsRequestedEvent + else: + assert licensing_service.licensing_repository.create_event_log.call_count == 2 From 58173708edbdbca62020d8ef23085d33cd049cc3 Mon Sep 17 00:00:00 2001 From: cdiener Date: Tue, 15 Apr 2025 22:48:38 +0200 Subject: [PATCH 3/9] fix: adapt documentation --- README.md | 8 +------- k8s/Dockerfile | 4 ++++ uv.lock | 34 ++++++++++++++++++++-------------- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 4dd9057..872c680 100644 --- a/README.md +++ b/README.md @@ -160,18 +160,12 @@ source .venv/bin/activate #### Sync your env ```shell -uv sync --extra export --extra tests -``` - -#### Install dependencies -```shell -uv pip install -e '.[export,tests]' +uv sync --extra export ``` ### Run uvicorn You can start the application using the following commands: ```sh -cd export PYTHONPATH=$PWD/src uvicorn services.licensing.main:app --reload --workers 1 --host 0.0.0.0 --port 8000 ``` diff --git a/k8s/Dockerfile b/k8s/Dockerfile index 5292006..b816670 100644 --- a/k8s/Dockerfile +++ b/k8s/Dockerfile @@ -30,6 +30,10 @@ RUN uv sync --extra export --frozen --no-editable --no-dev # INFO: final image only with virtual env FROM python:${python_version}-slim-bookworm ENV PYTHONUNBUFFERED 1 +ENV PATH="/venv/bin:$PATH" COPY --from=build /venv /venv +COPY ./alembic.ini . +COPY ./uvicorn_disable_logging.json . +COPY ./src/services/licensing/data/sqlalchemy/migrations ./src/services/licensing/data/sqlalchemy/migrations CMD ["uvicorn", "services.licensing.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "1", "--timeout-keep-alive", "0"] diff --git a/uv.lock b/uv.lock index 6c1ade8..3fedc63 100644 --- a/uv.lock +++ b/uv.lock @@ -759,7 +759,9 @@ export = [ { name = "paramiko" }, { name = "sshtunnel" }, ] -tests = [ + +[package.dev-dependencies] +dev = [ { name = "black" }, { name = "bump2version" }, { name = "commitizen" }, @@ -780,30 +782,18 @@ requires-dist = [ { name = "alembic", specifier = "==1.14.0" }, { name = "asgi-correlation-id", specifier = "==4.3.4" }, { name = "asyncpg", specifier = "==0.30.0" }, - { name = "black", marker = "extra == 'tests'", specifier = "==25.1.0" }, - { name = "bump2version", marker = "extra == 'tests'", specifier = "==1.0.1" }, { name = "click", specifier = "==8.1.8" }, - { name = "commitizen", marker = "extra == 'tests'", specifier = "==4.1.0" }, { name = "cryptography", specifier = "==42.0.7" }, { name = "elastic-apm", specifier = "==6.23.0" }, { name = "fastapi", specifier = "==0.115.6" }, { name = "fastapi-pagination", specifier = "==0.12.34" }, - { name = "freezegun", marker = "extra == 'tests'", specifier = "==1.5.1" }, { name = "httptools", specifier = "==0.6.4" }, { name = "httpx", specifier = "==0.28.1" }, { name = "jsonschema", specifier = "==4.23.0" }, { name = "jwcrypto", specifier = "==1.5.6" }, - { name = "mock", marker = "extra == 'tests'", specifier = "==5.1.0" }, { name = "motor", marker = "extra == 'export'", specifier = "==3.6.0" }, { name = "paramiko", marker = "extra == 'export'", specifier = "==3.5.0" }, { name = "pydantic", specifier = "==2.10.4" }, - { name = "pytest", marker = "extra == 'tests'", specifier = "==8.3.4" }, - { name = "pytest-anything", marker = "extra == 'tests'", specifier = "==0.1.4" }, - { name = "pytest-asyncio", marker = "extra == 'tests'", specifier = "==0.25.1" }, - { name = "pytest-cov", marker = "extra == 'tests'", specifier = "==6.0.0" }, - { name = "pytest-env", marker = "extra == 'tests'", specifier = "==1.1.5" }, - { name = "pytest-mock", marker = "extra == 'tests'", specifier = "==3.14.0" }, - { name = "pytest-watch", marker = "extra == 'tests'", specifier = "==4.2.0" }, { name = "python-dateutil", specifier = "==2.9.0.post0" }, { name = "python-decouple", specifier = "==3.8" }, { name = "pyyaml", specifier = "==6.0.2" }, @@ -813,7 +803,23 @@ requires-dist = [ { name = "structlog", specifier = "==24.4.0" }, { name = "uvicorn", specifier = "==0.34.0" }, ] -provides-extras = ["export", "tests"] +provides-extras = ["export"] + +[package.metadata.requires-dev] +dev = [ + { name = "black", specifier = "==25.1.0" }, + { name = "bump2version", specifier = "==1.0.1" }, + { name = "commitizen", specifier = "==4.1.0" }, + { name = "freezegun", specifier = "==1.5.1" }, + { name = "mock", specifier = "==5.1.0" }, + { name = "pytest", specifier = "==8.3.4" }, + { name = "pytest-anything", specifier = "==0.1.4" }, + { name = "pytest-asyncio", specifier = "==0.25.1" }, + { name = "pytest-cov", specifier = "==6.0.0" }, + { name = "pytest-env", specifier = "==1.1.5" }, + { name = "pytest-mock", specifier = "==3.14.0" }, + { name = "pytest-watch", specifier = "==4.2.0" }, +] [[package]] name = "mako" From ce0b09ac663eae8bd3cc78f5d4c9adaf59869040 Mon Sep 17 00:00:00 2001 From: cdiener Date: Tue, 15 Apr 2025 22:53:10 +0200 Subject: [PATCH 4/9] refactor: remove bettermarks specific test --- tests/unit/test_bettermarks_export.py | 28 --------------------------- 1 file changed, 28 deletions(-) delete mode 100644 tests/unit/test_bettermarks_export.py diff --git a/tests/unit/test_bettermarks_export.py b/tests/unit/test_bettermarks_export.py deleted file mode 100644 index 5464514..0000000 --- a/tests/unit/test_bettermarks_export.py +++ /dev/null @@ -1,28 +0,0 @@ -import datetime -from freezegun import freeze_time -from fastapi import status - - -@freeze_time("2023-01-01") -async def test_export_event_do_nothing(): - from services.licensing.export.bettermarks_export import export_event - - assert ( - await export_event("DummyType", datetime.datetime.now(), {"a": "test"}) is True - ) - - -async def test_export_event_http_exception(mocker): - from services.licensing.export.bettermarks_export import export_event - from services.licensing.exceptions import HTTPException - - mocker.patch("services.licensing.settings.bm_data_event_api_url", "anything") - mocker.patch( - "services.licensing.export.bettermarks_export.post_request", - side_effect=HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, message="MockedError" - ), - ) - assert ( - await export_event("DummyType", datetime.datetime.now(), {"a": "test"}) is False - ) From d50f549c03cd1f3593a5e9bf7ba19c4e3820e48f Mon Sep 17 00:00:00 2001 From: cdiener Date: Wed, 16 Apr 2025 08:37:37 +0200 Subject: [PATCH 5/9] test: add workflow to test cdk8s and tilt --- .github/workflows/test-k8s.yml | 58 ++++++++++++++++++++++++++++++++++ Tiltfile | 2 +- 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/test-k8s.yml diff --git a/.github/workflows/test-k8s.yml b/.github/workflows/test-k8s.yml new file mode 100644 index 0000000..a6a94ba --- /dev/null +++ b/.github/workflows/test-k8s.yml @@ -0,0 +1,58 @@ +name: Tests k8s + +on: + pull_request: + paths: + - k8s/** + - Tiltfile + branches: [master] + push: + paths: + - k8s/** + - Tiltfile + branches: [master] + +jobs: + cdk8s-tests: + runs-on: buildjet-4vcpu-ubuntu-2204 + defaults: + run: + working-directory: ./k8s + steps: + - name: Checkout Code + uses: actions/checkout@v4 + with: + fetch-depth: 1 + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version-file: k8s/.nvmrc + - name: Install dependencies + run: npm ci + # Build command also run synth, tests to ensure that stack can be build + - name: Run build + run: npm run build + + tilt-check: + runs-on: buildjet-4vcpu-ubuntu-2204 + needs: + - cdk8s-tests + steps: + - name: Checkout Code + uses: actions/checkout@v4 + with: + fetch-depth: 1 + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version-file: k8s/.nvmrc + - name: Install tilt + shell: bash + run: | + curl -fsSL https://raw.githubusercontent.com/tilt-dev/tilt/master/scripts/install.sh | bash + - name: Create k8s cluster + uses: helm/kind-action@v1 + - name: Check Tilt + shell: bash + run: | + tilt ci diff --git a/Tiltfile b/Tiltfile index d76bc26..e91a6e9 100644 --- a/Tiltfile +++ b/Tiltfile @@ -64,7 +64,7 @@ def build_remote(): ) -SEGMENT = os.getenv("LICENSING_SEGMENT", "loc00") +SEGMENT = os.getenv("OPAL_SEGMENT", "loc00") BUILD_LOCAL = SEGMENT.startswith("loc") if BUILD_LOCAL: From 59c5db35ad0d2ddf0ec41ae5adbfef365539334c Mon Sep 17 00:00:00 2001 From: cdiener Date: Wed, 16 Apr 2025 08:56:52 +0200 Subject: [PATCH 6/9] build: move namespace creation to tiltfile --- Tiltfile | 31 ++++++------------------------- k8s/lib/namespace.ts | 11 ----------- k8s/main.ts | 3 --- 3 files changed, 6 insertions(+), 39 deletions(-) delete mode 100644 k8s/lib/namespace.ts diff --git a/Tiltfile b/Tiltfile index e91a6e9..181c60b 100644 --- a/Tiltfile +++ b/Tiltfile @@ -1,7 +1,10 @@ local("make dist", dir="k8s") -k8s_yaml("k8s/dist/namespace.k8s.yaml") -k8s_yaml([f for f in listdir(os.path.join("k8s", "dist")) if not "namespace" in f]) +# Create namespace if it doesn't exist +local( + "kubectl get namespace integration --no-headers || kubectl create namespace integration" +) +k8s_yaml(listdir(os.path.join("k8s", "dist"))) k8s_resource( objects=[ @@ -46,28 +49,6 @@ def build_local(): ) -def build_remote(): - build_info = decode_json( - local( - "curl -s https://licensing-{}.bettermarks.com/version".format(SEGMENT), - quiet=True, - ) - ) - version = build_info["version"] - print("Use remote version {}".format(version)) - docker_build( - "licensing", - ".", - dockerfile_contents="FROM 676249682729.dkr.ecr.eu-central-1.amazonaws.com/licensing:{}".format( - version - ), - ) - - SEGMENT = os.getenv("OPAL_SEGMENT", "loc00") -BUILD_LOCAL = SEGMENT.startswith("loc") -if BUILD_LOCAL: - build_local() -else: - build_remote() +build_local() diff --git a/k8s/lib/namespace.ts b/k8s/lib/namespace.ts deleted file mode 100644 index d240461..0000000 --- a/k8s/lib/namespace.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Chart, App } from "cdk8s"; -import * as kplus from "cdk8s-plus-29"; - -export const createNamespaceChart = (app: App, name: string) => { - const namespaceChart = new Chart(app, "namespace"); - new kplus.Namespace(namespaceChart, "Namespace", { - metadata: { name: name }, - }); - - return namespaceChart; -}; diff --git a/k8s/main.ts b/k8s/main.ts index 542aefa..fb00909 100644 --- a/k8s/main.ts +++ b/k8s/main.ts @@ -1,5 +1,4 @@ import { createLicensingApp } from "./lib/licensing/licensing-app"; -import { createNamespaceChart } from "./lib/namespace"; import { Segment } from "./lib/types"; import { Namespace } from "./lib/types"; import { App } from "cdk8s"; @@ -14,8 +13,6 @@ if (SEGMENT !== Segment.LOC00 && IMAGE_TAG === "") { const app = new App({ outdir: "dist" }); -createNamespaceChart(app, Namespace.LICENSING); - createLicensingApp(app, { segment: SEGMENT, imageTag: IMAGE_TAG, From 005fd6f6986556b976bcb81a97fa12af242ed441 Mon Sep 17 00:00:00 2001 From: cdiener Date: Wed, 16 Apr 2025 16:25:33 +0200 Subject: [PATCH 7/9] build: remove duplicated dockerfile --- Tiltfile | 2 +- k8s/Dockerfile | 2 +- k8s/Dockerfile.dev | 39 --------------------------------------- 3 files changed, 2 insertions(+), 41 deletions(-) delete mode 100644 k8s/Dockerfile.dev diff --git a/Tiltfile b/Tiltfile index 181c60b..60233ca 100644 --- a/Tiltfile +++ b/Tiltfile @@ -44,7 +44,7 @@ def build_local(): docker_build( "licensing", ".", - dockerfile=os.path.join("k8s", "Dockerfile.dev"), + dockerfile=os.path.join("k8s", "Dockerfile"), build_args={"python_version": python_version}, ) diff --git a/k8s/Dockerfile b/k8s/Dockerfile index b816670..26ec658 100644 --- a/k8s/Dockerfile +++ b/k8s/Dockerfile @@ -36,4 +36,4 @@ COPY ./alembic.ini . COPY ./uvicorn_disable_logging.json . COPY ./src/services/licensing/data/sqlalchemy/migrations ./src/services/licensing/data/sqlalchemy/migrations -CMD ["uvicorn", "services.licensing.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "1", "--timeout-keep-alive", "0"] +CMD ["uvicorn", "services.licensing.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "1", "--log-config", "uvicorn_disable_logging.json", "--timeout-keep-alive", "0"] diff --git a/k8s/Dockerfile.dev b/k8s/Dockerfile.dev deleted file mode 100644 index 26ec658..0000000 --- a/k8s/Dockerfile.dev +++ /dev/null @@ -1,39 +0,0 @@ -ARG python_version 3.12.9 - -# INFO: we just install project dependencies in this layer -FROM python:${python_version}-slim-bookworm AS dependencies - -ENV PYTHONDONTWRITEBYTECODE 1 -ENV PYTHONUNBUFFERED 1 -ENV UV_PROJECT_ENVIRONMENT=/venv -COPY --from=ghcr.io/astral-sh/uv:0.6.10 /uv /uvx /bin/ - -WORKDIR /code -COPY ./pyproject.toml . -COPY ./uv.lock . - -RUN uv venv && uv sync --frozen --no-dev --no-install-project - -# INFO: we take the virtual env and add the project itself -FROM python:${python_version}-slim-bookworm AS build -ENV UV_PROJECT_ENVIRONMENT=/venv -COPY --from=ghcr.io/astral-sh/uv:0.6.10 /uv /uvx /bin/ -COPY --from=dependencies /venv /venv - -WORKDIR /code -COPY ./src . -COPY ./pyproject.toml . -COPY ./uv.lock . - -RUN uv sync --extra export --frozen --no-editable --no-dev - -# INFO: final image only with virtual env -FROM python:${python_version}-slim-bookworm -ENV PYTHONUNBUFFERED 1 -ENV PATH="/venv/bin:$PATH" -COPY --from=build /venv /venv -COPY ./alembic.ini . -COPY ./uvicorn_disable_logging.json . -COPY ./src/services/licensing/data/sqlalchemy/migrations ./src/services/licensing/data/sqlalchemy/migrations - -CMD ["uvicorn", "services.licensing.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "1", "--log-config", "uvicorn_disable_logging.json", "--timeout-keep-alive", "0"] From f15f00897b950fce6755e04fb300f6916732e0ae Mon Sep 17 00:00:00 2001 From: cdiener Date: Wed, 16 Apr 2025 16:32:45 +0200 Subject: [PATCH 8/9] refactor: ergonomic way of defining Optional --- .../licensing/api/v1/schema/invoice.py | 18 +++++++++--------- .../licensing/api/v1/schema/license.py | 10 +++++----- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/services/licensing/api/v1/schema/invoice.py b/src/services/licensing/api/v1/schema/invoice.py index 6b9fc39..0fcc092 100644 --- a/src/services/licensing/api/v1/schema/invoice.py +++ b/src/services/licensing/api/v1/schema/invoice.py @@ -11,28 +11,28 @@ class InvoiceCreateSchema(BaseSchema): valid_to: str firstname: str lastname: str - phone: Optional[str] = None + phone: str | None = None email: str address_institution: str address_line2: str - address_line3: Optional[str] = None + address_line3: str | None = None address_street: str address_zip: str address_city: str address_country: str survey: str - vat_id: Optional[str] = None - system: Optional[str] = None - license_id: Optional[str] = None + vat_id: str | None = None + system: str | None = None + license_id: str | None = None class Config: from_attributes = True class InvoiceCreatedSchema(BaseSchema): - id: Optional[int] = None + id: int | None = None is_valid: bool page_number: int - confirmation_message: Optional[str] = None - confirmation_type: Optional[str] = None - validation_messages: Optional[dict] = None + confirmation_message: str | None = None + confirmation_type: str | None = None + validation_messages: dict | None = None diff --git a/src/services/licensing/api/v1/schema/license.py b/src/services/licensing/api/v1/schema/license.py index 7c9262d..8d06dda 100644 --- a/src/services/licensing/api/v1/schema/license.py +++ b/src/services/licensing/api/v1/schema/license.py @@ -64,15 +64,15 @@ class LicenseUpdateSchema(BaseSchema): "Extra seats make it possible to “overbook” the license seats of a license." ), ) - valid_from: Optional[datetime.date] = None - valid_to: Optional[datetime.date] = None + valid_from: datetime.date | None = None + valid_to: datetime.date | None = None class LicenseTrialSchema(LicenseBaseDeserializerSchema): product_eid: str = Field(min_length=1, max_length=256) owner_eid: str memberships: list - duration_weeks: Optional[int] = None + duration_weeks: int | None = None class Config: json_schema_extra = { @@ -197,6 +197,6 @@ class LicenseCompleteSchema(LicenseBaseSerializerSchema): id: int manager_eid: str owner_eids: List[str] - notes: Optional[str] = None + notes: str | None = None created_at: datetime.datetime - updated_at: Optional[datetime.datetime] = None + updated_at: datetime.datetime | None = None From df49daedab145598c4aa9dc8da786e174ed9104e Mon Sep 17 00:00:00 2001 From: cdiener Date: Thu, 17 Apr 2025 11:55:48 +0200 Subject: [PATCH 9/9] docs: removed irrelevant docs --- k8s/README.md | 171 +------------------------------------------------- 1 file changed, 2 insertions(+), 169 deletions(-) diff --git a/k8s/README.md b/k8s/README.md index b6d0e54..ec26587 100644 --- a/k8s/README.md +++ b/k8s/README.md @@ -7,7 +7,6 @@ This is giving a brief introduction how to run License-Manager on a local or rem - nvm: https://github.com/nvm-sh/nvm#installing-and-updating - npm - docker -- skaffold: https://skaffold.dev/docs/install/ - kubectl: https://kubernetes.io/docs/tasks/tools/#kubectl - Locally running Kubernetes Cluster from any of the below options - Docker Desktop: https://www.docker.com/products/docker-desktop/ @@ -32,10 +31,6 @@ This is giving a brief introduction how to run License-Manager on a local or rem ```sh npm run compile ``` - or - ```sh - yarn watch - ``` - Watch for changes and compile typescript in the background: ``` npm run watch @@ -49,7 +44,7 @@ This is giving a brief introduction how to run License-Manager on a local or rem - Synthesize k8s manifests from charts to dist/ (ready for 'kubectl apply -f') ```sh - make k8s_synth + make dist ``` ### Upgrades @@ -70,167 +65,5 @@ This is giving a brief introduction how to run License-Manager on a local or rem ## Deploy K8s manifests ```sh -kubectl apply -f dist/-*yaml +kubectl apply -f dist ``` - -## Set up License-Service locally - -1. Switch to `k8s` folder: - ```sh - cd k8s - ``` -2. Ensure using the right version of Node configured in `.nvmrc`: - ```sh - nvm use - ``` -3. Install the required packages listed the `package.json`: - ```sh - npm install - ``` -4. Run snapshot tests and synthesize the K8s manifests from charts to `dist/` folder: - ```sh - npm run build - ``` -5. Apply the K8S manifests to the local Kubernetes cluster with the help of `skaffold` and `kustomize` and wait until the `licensing-deployment-**\*** pod` is running: - ```sh - cd .. - skaffold dev - ``` - All required credentials for local development are part of the repo in `k8s/loc00` folder. -6. In oder to access the environment locally you need to add the following line to the `/etc/hosts` file: - ```sh - echo "127.0.0.1 licensing.opal.loc" | sudo tee -a >> /etc/hosts - ``` -7. License-Service status: - https://licensing.opal.loc:8443/v1/status - -### Connect to local postgres (licensing-db) - -To be able to connect to the licensing-db service you need to forward the port (configured to :5433): - -```sh - make pg-port-forward -``` - -This is also helpful for running tests. - -## Set up License-Service on remote cluster - -#### Prerequisites - -- The target cluster must exist. -- The target cluster should have been configured with required secrets and tools as described in [README.md](https://github.com/bettermarks/bm-operations/blob/master/cdk8s/README.md) - - Required secrets: - - licensing-postgres-secret - - licensing-application-secret - - registry-credentials - - Required deployments: - - Postgres DB cluster - - Cloudflare tunnel -- You need a `kubeconfig` file to access the target cluster. - -1. Switch to `ks8` folder: - ```sh - cd k8s - ``` -2. Ensure using the right version of Node configured in `.nvmrc`: - ```sh - nvm use - ``` -3. Install the required packages listed in `package.json`: - ```sh - npm install - ``` -4. Create K8s manifests from charts to `dist/` folder for the target segment: - ```sh - SEGMENT= IMAGE_TAG= npm run synth - ``` -5. Connect ot the remote cluster: - ``` - export KUBECONFIG= - ``` -6. Deploy the K8s manifests: - ``` - kubectl apply -f dist/-*yaml - ``` - -## Other useful kubectl commands to see the created resources - -1. In order to see the pods created under the namespace `licensing`: - ```sh - kubectl -n licensing get pods - ``` -2. In order to see the secrets created under the namespace `licensing`: - ```sh - kubectl -n licensing get secrets - ``` -3. In order to see the cronjobs created under the namespace `licensing`: - ```sh - kubectl -n licensing get cronjobs - ``` -4. In order to see the jobs created under the namespace `licensing`: - ```sh - kubectl -n licensing get jobs - ``` -5. In order to see the configmaps created under the namespace `licensing`: - ```sh - kubectl -n licensing get configmap - ``` -6. In order to see the deployments created under the namespace `licensing`: - ```sh - kubectl -n licensing get deployments - ``` -7. In order to see the cronjobs created under the namespace `licensing`: - ```sh - kubectl -n licensing logs - ``` -8. In order to describe the specific details of the resource created under the namespace `licensing`: - ```sh - kubectl -n licensing describe - ``` -9. In order to create/configure the resource created: - ```sh - kubectl -n licensing apply / - ``` -10. In order to debug a container of a pod via pdb (this picks the first available container in the pod) - -````sh -kubectl -n licensing get pods -kubectl -n licensing attach POD_NAME -it - - -## Structure - -```mermaid -classDiagram - -class PostgresChart { -+ConfigMap configMap -+Secret secret -+KubeService kubeService -+KubeDeployment kubeDeployment -} - -class LicensingChart { -+KubeServiceAccount serviceAccount -+KubeRole role -+KubeRoleBinding -+LicensingService licensingService -+KubeIngress -} - -class IngressNginxChart { -+Helm ingressNginx -} - -class LicensingService { -+KubeDeployment -+KubeService -} - -App --> PostgresChart -App --> LicensingChart -App --> IngressNginxChart -LicensingChart --> LicensingService - -````