From 553da79b93579587bfe6d60c7c4e5e75e328e3de Mon Sep 17 00:00:00 2001 From: Mustafa Ilyas Date: Wed, 5 Jun 2024 20:51:52 +0100 Subject: [PATCH 1/2] Adding query API endpoints to python client (#3650) * Adding missing methods to python client (#154) * Adding proto methods * Adding tests and docs * Making tox formatting pass * Fixing docs * Bump version --------- Co-authored-by: Mustafa Ilyas --- client/python/armada_client/__init__.py | 14 ++++ client/python/armada_client/_proto_methods.py | 38 +++++++++++ client/python/armada_client/asyncio_client.py | 47 ++++++++++++- client/python/armada_client/client.py | 42 +++++++++++- client/python/pyproject.toml | 2 +- client/python/tests/unit/server_mock.py | 48 +++++++++++++ .../python/tests/unit/test_asyncio_client.py | 49 +++++++++++-- client/python/tests/unit/test_client.py | 44 ++++++++++-- docs/python_armada_client.md | 68 ++++++++++++++++++- 9 files changed, 340 insertions(+), 12 deletions(-) create mode 100644 client/python/armada_client/_proto_methods.py diff --git a/client/python/armada_client/__init__.py b/client/python/armada_client/__init__.py index e69de29bb2d..c1e297ad39a 100644 --- a/client/python/armada_client/__init__.py +++ b/client/python/armada_client/__init__.py @@ -0,0 +1,14 @@ +try: + from .typings import JobState + from ._proto_methods import is_active, is_terminal + + JobState.is_active = is_active + JobState.is_terminal = is_terminal + + del is_active, is_terminal, JobState +except ImportError: + """ + Import errors occur during proto generation, where certain + modules import types that don't exist yet. We can safely ignore these failures + """ + pass diff --git a/client/python/armada_client/_proto_methods.py b/client/python/armada_client/_proto_methods.py new file mode 100644 index 00000000000..608527842f1 --- /dev/null +++ b/client/python/armada_client/_proto_methods.py @@ -0,0 +1,38 @@ +from armada_client.typings import JobState + + +def is_terminal(self) -> bool: + """ + Determines if a job state is terminal. + + Terminal states indicate that a job has completed its lifecycle, + whether successfully or due to failure. + + :param state: The current state of the job. + :type state: JobState + + :returns: True if the job state is terminal, False if it is active. + :rtype: bool + """ + terminal_states = { + JobState.SUCCEEDED, + JobState.FAILED, + JobState.CANCELLED, + JobState.PREEMPTED, + } + return self.value in terminal_states + + +def is_active(self) -> bool: + """ + Determines if a job state is active. + + Active states indicate that a job is still running or in a non-terminal state. + + :param state: The current state of the job. + :type state: JobState + + :returns: True if the job state is active, False if it is terminal. + :rtype: bool + """ + return not is_terminal(self.value) diff --git a/client/python/armada_client/asyncio_client.py b/client/python/armada_client/asyncio_client.py index 96ef1c03991..301e7923445 100644 --- a/client/python/armada_client/asyncio_client.py +++ b/client/python/armada_client/asyncio_client.py @@ -18,6 +18,8 @@ submit_pb2, submit_pb2_grpc, health_pb2, + job_pb2, + job_pb2_grpc, ) from armada_client.event import Event from armada_client.k8s.io.api.core.v1 import generated_pb2 as core_v1 @@ -104,6 +106,7 @@ def __init__( ) -> None: self.submit_stub = submit_pb2_grpc.SubmitStub(channel) self.event_stub = event_pb2_grpc.EventStub(channel) + self.job_stub = job_pb2_grpc.JobsStub(channel) self.event_timeout = event_timeout async def get_job_events_stream( @@ -169,7 +172,7 @@ async def event_health(self) -> health_pb2.HealthCheckResponse: async def submit_jobs( self, queue: str, job_set_id: str, job_request_items ) -> AsyncIterator[submit_pb2.JobSubmitResponse]: - """Submit a armada job. + """Submit an armada job. Uses SubmitJobs RPC to submit a job. @@ -185,6 +188,48 @@ async def submit_jobs( response = await self.submit_stub.SubmitJobs(request) return response + async def get_job_status(self, job_ids: List[str]) -> job_pb2.JobStatusResponse: + """ + Asynchronously retrieves the status of a list of jobs from Armada. + + :param job_ids: A list of unique job identifiers. + :type job_ids: List[str] + + :returns: The response from the server containing the job status. + :rtype: JobStatusResponse + """ + req = job_pb2.JobStatusRequest(job_ids=job_ids) + resp = await self.job_stub.GetJobStatus(req) + return resp + + async def get_job_details(self, job_ids: List[str]) -> job_pb2.JobDetailsResponse: + """ + Asynchronously retrieves the details of a job from Armada. + + :param job_ids: A list of unique job identifiers. + :type job_ids: List[str] + + :returns: The Armada job details response. + """ + req = job_pb2.JobDetailsRequest(job_ids=job_ids, expand_job_run=True) + resp = await self.job_stub.GetJobDetails(req) + return resp + + async def get_job_run_details( + self, run_ids: List[str] + ) -> job_pb2.JobRunDetailsResponse: + """ + Asynchronously retrieves the details of a job run from Armada. + + :param run_ids: A list of unique job run identifiers. + :type run_ids: List[str] + + :returns: The Armada run details response. + """ + req = job_pb2.JobRunDetailsRequest(run_ids=run_ids) + resp = await self.job_stub.GetJobRunDetails(req) + return resp + async def cancel_jobs( self, queue: str, diff --git a/client/python/armada_client/client.py b/client/python/armada_client/client.py index 93da95e3aef..1cf36c7c2ed 100644 --- a/client/python/armada_client/client.py +++ b/client/python/armada_client/client.py @@ -17,6 +17,8 @@ submit_pb2, submit_pb2_grpc, health_pb2, + job_pb2, + job_pb2_grpc, ) from armada_client.event import Event from armada_client.k8s.io.api.core.v1 import generated_pb2 as core_v1 @@ -102,6 +104,7 @@ def __init__(self, channel, event_timeout: timedelta = timedelta(minutes=15)): self.submit_stub = submit_pb2_grpc.SubmitStub(channel) self.event_stub = event_pb2_grpc.EventStub(channel) self.event_timeout = event_timeout + self.job_stub = job_pb2_grpc.JobsStub(channel) def get_job_events_stream( self, @@ -161,10 +164,47 @@ def event_health(self) -> health_pb2.HealthCheckResponse: """ return self.event_stub.Health(request=empty_pb2.Empty()) + def get_job_status(self, job_ids: List[str]) -> job_pb2.JobStatusResponse: + """ + Retrieves the status of a list of jobs from Armada. + + :param job_ids: A list of unique job identifiers. + :type job_ids: List[str] + + :returns: The response from the server containing the job status. + :rtype: JobStatusResponse + """ + req = job_pb2.JobStatusRequest(job_ids=job_ids) + return self.job_stub.GetJobStatus(req) + + def get_job_details(self, job_ids: List[str]) -> job_pb2.JobDetailsResponse: + """ + Retrieves the details of a job from Armada. + + :param job_ids: A list of unique job identifiers. + :type job_ids: List[str] + + :returns: The Armada job details response. + """ + req = job_pb2.JobDetailsRequest(job_ids=job_ids, expand_job_run=True) + return self.job_stub.GetJobDetails(req) + + def get_job_run_details(self, run_ids: List[str]) -> job_pb2.JobRunDetailsResponse: + """ + Retrieves the details of a job run from Armada. + + :param run_ids: A list of unique job run identifiers. + :type run_ids: List[str] + + :returns: The Armada run details response. + """ + req = job_pb2.JobRunDetailsRequest(run_ids=run_ids) + return self.job_stub.GetJobRunDetails(req) + def submit_jobs( self, queue: str, job_set_id: str, job_request_items ) -> submit_pb2.JobSubmitResponse: - """Submit a armada job. + """Submit an armada job. Uses SubmitJobs RPC to submit a job. diff --git a/client/python/pyproject.toml b/client/python/pyproject.toml index c286f711ca3..587c1f7ab00 100644 --- a/client/python/pyproject.toml +++ b/client/python/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "armada_client" -version = "0.3.2" +version = "0.3.3" description = "Armada gRPC API python client" readme = "README.md" requires-python = ">=3.7" diff --git a/client/python/tests/unit/server_mock.py b/client/python/tests/unit/server_mock.py index edfc81b31aa..8d19101203b 100644 --- a/client/python/tests/unit/server_mock.py +++ b/client/python/tests/unit/server_mock.py @@ -1,11 +1,16 @@ from google.protobuf import empty_pb2 + from armada_client.armada import ( submit_pb2_grpc, submit_pb2, event_pb2, event_pb2_grpc, health_pb2, + job_pb2_grpc, + job_pb2, ) +from armada_client.armada.job_pb2 import JobRunState +from armada_client.armada.submit_pb2 import JobState class SubmitService(submit_pb2_grpc.SubmitServicer): @@ -101,3 +106,46 @@ def Health(self, request, context): return health_pb2.HealthCheckResponse( status=health_pb2.HealthCheckResponse.SERVING ) + + +class QueryAPIService(job_pb2_grpc.JobsServicer): + DEFAULT_JOB_DETAILS = { + "queue": "test_queue", + "jobset": "test_jobset", + "namespace": "test_namespace", + "state": JobState.RUNNING, + "cancel_reason": "", + "latest_run_id": "0", + } + + DEFAULT_JOB_RUN_DETAILS = { + "job_id": "0", + "cluster": "test_cluster", + "node": "test_node", + "state": JobRunState.RUN_STATE_RUNNING, + } + + def GetJobStatus(self, request, context): + return job_pb2.JobStatusResponse( + job_states={job: JobState.RUNNING for job in request.job_ids} + ) + + def GetJobDetails(self, request, context): + return job_pb2.JobDetailsResponse( + job_details={ + job: job_pb2.JobDetails( + job_id=job, **QueryAPIService.DEFAULT_JOB_DETAILS + ) + for job in request.job_ids + } + ) + + def GetJobRunDetails(self, request, context): + return job_pb2.JobRunDetailsResponse( + job_run_details={ + run: job_pb2.JobRunDetails( + run_id=run, **QueryAPIService.DEFAULT_JOB_RUN_DETAILS + ) + for run in request.run_ids + } + ) diff --git a/client/python/tests/unit/test_asyncio_client.py b/client/python/tests/unit/test_asyncio_client.py index a7aebdcb224..6f4d8709c23 100644 --- a/client/python/tests/unit/test_asyncio_client.py +++ b/client/python/tests/unit/test_asyncio_client.py @@ -4,9 +4,17 @@ import pytest import pytest_asyncio -from server_mock import EventService, SubmitService - -from armada_client.armada import event_pb2_grpc, submit_pb2_grpc, submit_pb2, health_pb2 +from armada_client.typings import JobState +from armada_client.armada.job_pb2 import JobRunState +from server_mock import EventService, SubmitService, QueryAPIService + +from armada_client.armada import ( + event_pb2_grpc, + submit_pb2_grpc, + submit_pb2, + health_pb2, + job_pb2_grpc, +) from armada_client.asyncio_client import ArmadaAsyncIOClient from armada_client.k8s.io.api.core.v1 import generated_pb2 as core_v1 from armada_client.k8s.io.apimachinery.pkg.api.resource import ( @@ -14,7 +22,6 @@ ) from armada_client.permissions import Permissions, Subject -from armada_client.typings import JobState @pytest.fixture @@ -22,6 +29,7 @@ def server_mock(): server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) submit_pb2_grpc.add_SubmitServicer_to_server(SubmitService(), server) event_pb2_grpc.add_EventServicer_to_server(EventService(), server) + job_pb2_grpc.add_JobsServicer_to_server(QueryAPIService(), server) server.add_insecure_port("[::]:50051") server.start() yield @@ -302,3 +310,36 @@ async def test_health_submit(aio_client): async def test_health_event(aio_client): health = await aio_client.event_health() assert health.SERVING == health_pb2.HealthCheckResponse.SERVING + + +@pytest.mark.asyncio +async def test_job_status(aio_client): + await test_create_queue(aio_client) + await test_submit_job(aio_client) + + job_status_response = await aio_client.get_job_status(["job-1"]) + assert job_status_response.job_states["job-1"] == submit_pb2.JobState.RUNNING + + +@pytest.mark.asyncio +async def test_job_details(aio_client): + await test_create_queue(aio_client) + await test_submit_job(aio_client) + + job_details_response = await aio_client.get_job_details(["job-1"]) + job_details = job_details_response.job_details + assert job_details["job-1"].state == submit_pb2.JobState.RUNNING + assert job_details["job-1"].job_id == "job-1" + assert job_details["job-1"].queue == "test_queue" + + +@pytest.mark.asyncio +async def test_job_run_details(aio_client): + await test_create_queue(aio_client) + await test_submit_job(aio_client) + + run_details_response = await aio_client.get_job_run_details(["run-1"]) + run_details = run_details_response.job_run_details + assert run_details["run-1"].state == JobRunState.RUN_STATE_RUNNING + assert run_details["run-1"].run_id == "run-1" + assert run_details["run-1"].cluster == "test_cluster" diff --git a/client/python/tests/unit/test_client.py b/client/python/tests/unit/test_client.py index ab227dff7b7..70eba72439b 100644 --- a/client/python/tests/unit/test_client.py +++ b/client/python/tests/unit/test_client.py @@ -3,9 +3,17 @@ import grpc import pytest -from server_mock import EventService, SubmitService - -from armada_client.armada import event_pb2_grpc, submit_pb2_grpc, submit_pb2, health_pb2 +from armada_client.typings import JobState +from armada_client.armada.job_pb2 import JobRunState +from server_mock import EventService, SubmitService, QueryAPIService + +from armada_client.armada import ( + event_pb2_grpc, + submit_pb2_grpc, + submit_pb2, + health_pb2, + job_pb2_grpc, +) from armada_client.client import ArmadaClient from armada_client.k8s.io.api.core.v1 import generated_pb2 as core_v1 from armada_client.k8s.io.apimachinery.pkg.api.resource import ( @@ -13,7 +21,6 @@ ) from armada_client.permissions import Permissions, Subject -from armada_client.typings import JobState @pytest.fixture(scope="session", autouse=True) @@ -21,6 +28,7 @@ def server_mock(): server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) submit_pb2_grpc.add_SubmitServicer_to_server(SubmitService(), server) event_pb2_grpc.add_EventServicer_to_server(EventService(), server) + job_pb2_grpc.add_JobsServicer_to_server(QueryAPIService(), server) server.add_insecure_port("[::]:50051") server.start() @@ -278,3 +286,31 @@ def test_health_submit(): def test_health_event(): health = tester.event_health() assert health.SERVING == health_pb2.HealthCheckResponse.SERVING + + +def test_job_status(): + test_create_queue() + test_submit_job() + + job_status_response = tester.get_job_status(["job-1"]) + assert job_status_response.job_states["job-1"] == submit_pb2.JobState.RUNNING + + +def test_job_details(): + test_create_queue() + test_submit_job() + + job_details = tester.get_job_details(["job-1"]).job_details + assert job_details["job-1"].state == submit_pb2.JobState.RUNNING + assert job_details["job-1"].job_id == "job-1" + assert job_details["job-1"].queue == "test_queue" + + +def test_job_run_details(): + test_create_queue() + test_submit_job() + + run_details = tester.get_job_run_details(["run-1"]).job_run_details + assert run_details["run-1"].state == JobRunState.RUN_STATE_RUNNING + assert run_details["run-1"].run_id == "run-1" + assert run_details["run-1"].cluster == "test_cluster" diff --git a/docs/python_armada_client.md b/docs/python_armada_client.md index c0eca79b234..e2dc1228f89 100644 --- a/docs/python_armada_client.md +++ b/docs/python_armada_client.md @@ -255,6 +255,28 @@ Health check for Event Service. +#### get_job_details(job_ids) +Retrieves the details of a job from Armada. + + +* **Parameters** + + **job_ids** (*List**[**str**]*) – A list of unique job identifiers. + + + +* **Returns** + + The Armada job details response. + + + +* **Return type** + + armada.job_pb2.JobDetailsResponse + + + #### get_job_events_stream(queue, job_set_id, from_message_id=None) Get event stream for a job set. @@ -296,6 +318,50 @@ for event in events: +#### get_job_run_details(run_ids) +Retrieves the details of a job run from Armada. + + +* **Parameters** + + **run_ids** (*List**[**str**]*) – A list of unique job run identifiers. + + + +* **Returns** + + The Armada run details response. + + + +* **Return type** + + armada.job_pb2.JobRunDetailsResponse + + + +#### get_job_status(job_ids) +Retrieves the status of a list of jobs from Armada. + + +* **Parameters** + + **job_ids** (*List**[**str**]*) – A list of unique job identifiers. + + + +* **Returns** + + The response from the server containing the job status. + + + +* **Return type** + + JobStatusResponse + + + #### get_queue(name) Get the queue by name. @@ -398,7 +464,7 @@ Health check for Submit Service. #### submit_jobs(queue, job_set_id, job_request_items) -Submit a armada job. +Submit an armada job. Uses SubmitJobs RPC to submit a job. From 4691ada869dabf8cd726206da4e6aecbdbf47e64 Mon Sep 17 00:00:00 2001 From: Chris Martin Date: Thu, 6 Jun 2024 13:19:27 +0100 Subject: [PATCH 2/2] Update K8s dependency to 1.26.x (#3643) * update to k8s 1.26 Signed-off-by: Chris Martin * go mod tidy Signed-off-by: Chris Martin * Interface change on AddPodEventHandler Signed-off-by: Chris Martin * fix test Signed-off-by: Chris Martin * fix proto Signed-off-by: Chris Martin * more memory- newer alpine Signed-off-by: Chris Martin * wip Signed-off-by: Chris Martin * lint Signed-off-by: Chris Martin * newline Signed-off-by: Chris Martin --------- Signed-off-by: Chris Martin Co-authored-by: Chris Martin --- cmd/lookoutv2/main.go | 2 +- cmd/scheduler/cmd/prune_database.go | 2 +- e2e/setup/kind.yaml | 4 +- go.mod | 33 +- go.sum | 371 ++-------- internal/armada/submit/submit.go | 2 +- internal/armada/submit/submit_test.go | 2 +- internal/common/auth/kubernetes.go | 3 +- internal/common/auth/kubernetes_test.go | 2 +- internal/common/ingest/batch.go | 2 +- internal/common/ingest/batch_test.go | 2 +- internal/executor/application.go | 32 +- internal/executor/context/cluster_context.go | 15 +- .../executor/context/cluster_context_test.go | 2 +- .../context/fake/sync_cluster_context.go | 3 +- internal/executor/fake/context/context.go | 3 +- internal/executor/job/job_run_state_store.go | 7 +- .../metrics/pod_metrics/cluster_context.go | 9 +- .../executor/reporter/job_event_reporter.go | 15 +- .../reporter/job_event_reporter_test.go | 14 +- .../executor/service/pod_issue_handler.go | 11 +- .../service/pod_issue_handler_test.go | 44 +- internal/executor/service/resource_cleanup.go | 9 +- .../executor/service/resource_cleanup_test.go | 18 +- .../utilisation/job_utilisation_reporter.go | 9 +- .../job_utilisation_reporter_test.go | 10 +- .../pod_utilisation_custom_metrics.go | 2 +- internal/lookoutv2/pruner/pruner.go | 2 +- internal/lookoutv2/pruner/pruner_test.go | 2 +- internal/lookoutv2/repository/getjobs.go | 3 +- internal/lookoutv2/repository/getjobs_test.go | 2 +- internal/lookoutv2/repository/util.go | 5 +- internal/scheduler/api.go | 2 +- internal/scheduler/api_test.go | 2 +- internal/scheduler/database/db_pruner.go | 2 +- internal/scheduler/database/db_pruner_test.go | 2 +- internal/scheduler/jobdb/jobdb.go | 2 +- internal/scheduler/metrics.go | 4 +- internal/scheduler/metrics_test.go | 2 +- internal/scheduler/scheduler.go | 4 +- internal/scheduler/scheduler_test.go | 2 +- internal/scheduler/scheduling_algo.go | 2 +- internal/scheduler/scheduling_algo_test.go | 2 +- internal/scheduler/submitcheck.go | 2 +- internal/scheduler/submitcheck_test.go | 2 +- magefiles/kind.go | 6 +- pkg/api/api.swagger.go | 635 ++++++++++++------ pkg/api/api.swagger.json | 635 ++++++++++++------ .../testcases/basic/cancel_by_id_1x1.yaml | 8 +- .../testcases/basic/cancel_by_ids_1x10.yaml | 6 +- .../testcases/basic/cancel_by_set_1x1.yaml | 8 +- testsuite/testcases/basic/failure_1x1.yaml | 8 +- .../testcases/basic/failure_errimagepull.yaml | 6 +- .../testcases/basic/failure_namespace.yaml | 8 +- .../testcases/basic/failure_oom_1x1.yaml | 6 +- testsuite/testcases/basic/ingress.yaml | 4 +- .../basic/priorityclass_default.yaml | 8 +- testsuite/testcases/basic/submit_1x1.yaml | 8 +- testsuite/testcases/basic/submit_2x3.yaml | 8 +- .../testcases/basic/submit_fileshare_1x1.yaml | 12 +- .../basic/submit_random_clientid.yaml | 2 +- .../testcases/performance/submit_10x100.yaml | 6 +- .../testcases/performance/submit_1x1K.yaml | 6 +- .../performance/submit_load_1x500.yaml | 6 +- .../performance/submit_load_5x100.yaml | 6 +- tools.yaml | 2 +- 66 files changed, 1155 insertions(+), 911 deletions(-) diff --git a/cmd/lookoutv2/main.go b/cmd/lookoutv2/main.go index 03899a51575..83d53913e17 100644 --- a/cmd/lookoutv2/main.go +++ b/cmd/lookoutv2/main.go @@ -8,7 +8,7 @@ import ( log "github.com/sirupsen/logrus" "github.com/spf13/pflag" "github.com/spf13/viper" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" armada_config "github.com/armadaproject/armada/internal/armada/configuration" "github.com/armadaproject/armada/internal/common" diff --git a/cmd/scheduler/cmd/prune_database.go b/cmd/scheduler/cmd/prune_database.go index 4ed7aee426e..8b7711d0ace 100644 --- a/cmd/scheduler/cmd/prune_database.go +++ b/cmd/scheduler/cmd/prune_database.go @@ -5,7 +5,7 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/common/armadacontext" "github.com/armadaproject/armada/internal/common/database" diff --git a/e2e/setup/kind.yaml b/e2e/setup/kind.yaml index 06176ac0278..747be28e941 100644 --- a/e2e/setup/kind.yaml +++ b/e2e/setup/kind.yaml @@ -5,9 +5,9 @@ featureGates: "KubeletInUserNamespace": true nodes: - role: worker - image: kindest/node:v1.24.17 + image: kindest/node:v1.26.15 - role: control-plane - image: kindest/node:v1.24.17 + image: kindest/node:v1.26.15 kubeadmConfigPatches: - | kind: InitConfiguration diff --git a/go.mod b/go.mod index 5b75c19776a..ad749651b83 100644 --- a/go.mod +++ b/go.mod @@ -57,13 +57,13 @@ require ( google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f // indirect google.golang.org/grpc v1.59.0 gopkg.in/yaml.v2 v2.4.0 - k8s.io/api v0.22.4 - k8s.io/apimachinery v0.22.4 - k8s.io/client-go v0.22.4 - k8s.io/component-helpers v0.22.4 - k8s.io/kubectl v0.22.4 - k8s.io/kubelet v0.22.4 - k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 + k8s.io/api v0.26.15 + k8s.io/apimachinery v0.26.15 + k8s.io/client-go v0.26.15 + k8s.io/component-helpers v0.26.15 + k8s.io/kubectl v0.26.15 + k8s.io/kubelet v0.26.15 + k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 modernc.org/sqlite v1.26.0 sigs.k8s.io/yaml v1.4.0 ) @@ -123,7 +123,8 @@ require ( github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.6.0 // indirect github.com/elliotchance/orderedmap/v2 v2.2.0 // indirect - github.com/evanphx/json-patch v4.11.0+incompatible // indirect + github.com/emicklei/go-restful/v3 v3.9.0 // indirect + github.com/evanphx/json-patch v4.12.0+incompatible // indirect github.com/fatih/camelcase v1.0.0 // indirect github.com/fatih/color v1.14.1 // indirect github.com/fortytw2/leaktest v1.3.0 // indirect @@ -140,9 +141,9 @@ require ( github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/golang/snappy v0.0.3 // indirect github.com/google/btree v1.0.1 // indirect + github.com/google/gnostic v0.5.7-v3refs // indirect github.com/google/gofuzz v1.1.0 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/googleapis/gnostic v0.5.5 // indirect github.com/goreleaser/fileglob v1.3.0 // indirect github.com/goreleaser/nfpm/v2 v2.35.3 // indirect github.com/gorilla/css v1.0.0 // indirect @@ -180,6 +181,7 @@ require ( github.com/mtibben/percent v0.2.1 // indirect github.com/muesli/reflow v0.3.0 // indirect github.com/muesli/termenv v0.15.2 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect @@ -203,7 +205,7 @@ require ( github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect github.com/xitongsys/parquet-go-source v0.0.0-20200817004010-026bad9b25d0 // indirect - github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca // indirect + github.com/xlab/treeprint v1.1.0 // indirect github.com/yuin/goldmark v1.5.4 // indirect github.com/yuin/goldmark-emoji v1.0.2 // indirect go.mongodb.org/mongo-driver v1.13.1 // indirect @@ -222,9 +224,9 @@ require ( gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/square/go-jose.v2 v2.4.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/cli-runtime v0.22.4 // indirect + k8s.io/cli-runtime v0.26.15 // indirect k8s.io/klog/v2 v2.100.1 // indirect - k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c // indirect + k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 // indirect lukechampine.com/uint128 v1.2.0 // indirect modernc.org/cc/v3 v3.40.0 // indirect modernc.org/ccgo/v3 v3.16.13 // indirect @@ -234,7 +236,8 @@ require ( modernc.org/opt v0.1.3 // indirect modernc.org/strutil v1.1.3 // indirect modernc.org/token v1.0.1 // indirect - sigs.k8s.io/kustomize/api v0.8.11 // indirect - sigs.k8s.io/kustomize/kyaml v0.11.0 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.1.2 // indirect + sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect + sigs.k8s.io/kustomize/api v0.12.1 // indirect + sigs.k8s.io/kustomize/kyaml v0.13.9 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect ) diff --git a/go.sum b/go.sum index 7b72c206a1f..f4afefcea3a 100644 --- a/go.sum +++ b/go.sum @@ -8,7 +8,6 @@ cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= @@ -19,7 +18,6 @@ cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGB cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -33,38 +31,19 @@ github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo8 github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/AthenZ/athenz v1.10.4 h1:EhCptJxuPU2BNU0ZUTJRLrNwAFv06zMx0viN+PrV9YA= github.com/AthenZ/athenz v1.10.4/go.mod h1:ZKAbcckIMkqD2UKqBU2amZoynztPrgYcsmZ934LTDH4= -github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/alecthomas/assert/v2 v2.2.1 h1:XivOgYcduV98QCahG8T5XTezV5bylXe+lBxLG2K2ink= github.com/alecthomas/assert/v2 v2.2.1/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ= github.com/alecthomas/chroma/v2 v2.8.0 h1:w9WJUjFFmHHB2e8mRpL9jjy3alYDlU0QLDezj1xE264= github.com/alecthomas/chroma/v2 v2.8.0/go.mod h1:yrkMI9807G1ROx13fhe1v6PN2DDeaR73L3d+1nmYQtw= github.com/alecthomas/repr v0.2.0 h1:HAzS41CIzNW5syS8Mf9UwXhNH1J9aix/BvDRf1Ml2Yk= github.com/alecthomas/repr v0.2.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apache/arrow/go/arrow v0.0.0-20200730104253-651201b0f516 h1:byKBBF2CKWBjjA4J1ZL2JXttJULvWSl50LegTyRZ728= github.com/apache/arrow/go/arrow v0.0.0-20200730104253-651201b0f516/go.mod h1:QNYViu/X0HXDHw7m3KXzWSVXIbfUvJqBFe6Gj8/pYA0= @@ -76,11 +55,6 @@ github.com/apache/thrift v0.14.2/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb github.com/ardielle/ardielle-go v1.5.2 h1:TilHTpHIQJ27R1Tl/iITBzMwiUGSlVfiVhwDNGM3Zj4= github.com/ardielle/ardielle-go v1.5.2/go.mod h1:I4hy1n795cUhaVt/ojz83SNVCYIGsAFAONtv2Dr7HUI= github.com/ardielle/ardielle-tools v1.5.4/go.mod h1:oZN+JRMnqGiIhrzkRN9l26Cej9dEx4jeNG6A+AdkShk= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go v1.30.8/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= @@ -91,19 +65,13 @@ github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuP github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= -github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/immutable v0.4.3 h1:GYHcksoJ9K6HyAUpGxwZURrbTkXA0Dh4otXGqbhdrjA= github.com/benbjohnson/immutable v0.4.3/go.mod h1:qJIKKSmdqz1tVzNtst1DZzvaqOU1onk1rc03IeM3Owk= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bits-and-blooms/bitset v1.4.0 h1:+YZ8ePm+He2pU3dZlIZiOeAKfrBkXi1lSrXJ/Xzgbu8= github.com/bits-and-blooms/bitset v1.4.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/boynton/repl v0.0.0-20170116235056-348863958e3e/go.mod h1:Crc/GCZ3NXDVCio7Yr0o+SSrytpcFhLmVCIzi0s49t4= github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= @@ -117,11 +85,8 @@ github.com/caarlos0/testfs v0.4.4 h1:3PHvzHi5Lt+g332CiShwS8ogTgS3HjrmzZxCm6JCDr8 github.com/caarlos0/testfs v0.4.4/go.mod h1:bRN55zgG4XCUVVHZCeU+/Tz1Q6AxEJOEJTliBy+1DMk= github.com/cenkalti/backoff/v4 v4.0.0/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= github.com/charmbracelet/glamour v0.7.0 h1:2BtKGZ4iVJCDfMF229EzbeR1QRKLWztO9dMtjmqZSng= github.com/charmbracelet/glamour v0.7.0/go.mod h1:jUMh5MeihljJPQbJ/wf4ldw2+yBP59+ctV36jASy7ps= github.com/charmbracelet/lipgloss v0.9.1 h1:PNyd3jvaJbg4jRHKWXnCj1akQm4rh8dbEzN1p/u1KWg= @@ -131,41 +96,29 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/colinmarc/hdfs/v2 v2.1.1/go.mod h1:M3x+k8UKKmxtFu++uAZ0OtDU8jR3jnaZIAc6yK4Ue0c= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-oidc v2.2.1+incompatible h1:mh48q/BqXqgjVHpy2ZY7WnWAbenxRjsz9N1i1YxjHAk= github.com/coreos/go-oidc v2.2.1+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dimfeld/httptreemux v5.0.1+incompatible h1:Qj3gVcDNoOthBAqftuD596rm4wg/adLLz5xh5CmpiCA= github.com/dimfeld/httptreemux v5.0.1+incompatible/go.mod h1:rbUlSV+CCpv/SuqUTP/8Bk2O3LyUV436/yaRGkhP6Z0= github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E= github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= @@ -173,37 +126,28 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elliotchance/orderedmap/v2 v2.2.0 h1:7/2iwO98kYT4XkOjA9mBEIwvi4KpGB4cyHeOFOnj4Vk= github.com/elliotchance/orderedmap/v2 v2.2.0/go.mod h1:85lZyVbpGaGvHvnKa7Qhx7zncAdBIBq6u56Hb1PRU5Q= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE= +github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.11.0+incompatible h1:glyUF9yIYtMHzn8xaKw5rMhdWcwsYV8dZHIq5567/xs= -github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= +github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= +github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= -github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/fvbommel/sortorder v1.0.1/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -212,15 +156,8 @@ github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -228,12 +165,8 @@ github.com/go-openapi/analysis v0.22.2 h1:ZBmNoP2h5omLKr/srIC9bfqrUGzT6g6gNv03HE github.com/go-openapi/analysis v0.22.2/go.mod h1:pDF4UbZsQTo/oNuRfAWWd4dAh4yuYf//LYorPTjrpvo= github.com/go-openapi/errors v0.21.0 h1:FhChC/duCnfoLj1gZ0BgaBmzhJC2SL/sJr8a2vAobSY= github.com/go-openapi/errors v0.21.0/go.mod h1:jxNTMUxRCKj65yb/okJGEtahVd7uvWnuWfj53bse4ho= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q= github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= github.com/go-openapi/jsonreference v0.20.4 h1:bKlDxQxQJgwpUSgOENiMPzCTBVuc7vTdXSSgNeAhojU= github.com/go-openapi/jsonreference v0.20.4/go.mod h1:5pZJyJP2MnYCpoeoMAql78cCHauHj0V9Lhc506VOpw4= github.com/go-openapi/loads v0.21.5 h1:jDzF4dSoHw6ZFADCGltDb2lE4F6De7aWSpe+IcsRzT0= @@ -244,8 +177,6 @@ github.com/go-openapi/spec v0.20.14 h1:7CBlRnw+mtjFGlPDRZmAMnq35cRzI91xj03HVyUi/ github.com/go-openapi/spec v0.20.14/go.mod h1:8EOhTpBoFiask8rrgwbLC3zmJfz4zsCUueRuPM6GNkw= github.com/go-openapi/strfmt v0.21.10 h1:JIsly3KXZB/Qf4UzvzJpg4OELH/0ASDQsyk//TTBDDk= github.com/go-openapi/strfmt v0.21.10/go.mod h1:vNDMwbilnl7xKiO/Ve/8H8Bb2JIInBnH+lqiw6QWgis= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.22.6 h1:dnqg1XfHXL9aBxSbktBqFR5CxVyVI+7fYWhAf1JOeTw= github.com/go-openapi/swag v0.22.6/go.mod h1:Gl91UqO+btAM0plGGxHqJcQZ1ZTy6jbmridBTsDy8A0= github.com/go-openapi/validate v0.22.6 h1:+NhuwcEYpWdO5Nm4bmvhGLW0rt1Fcc532Mu3wpypXfo= @@ -267,8 +198,6 @@ github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6 github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a h1:dR8+Q0uO5S2ZBcs2IH6VBKYwSxPo2vYCYq0ot0mu7xA= github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/gogo/status v1.1.1 h1:DuHXlSFHNKqTQ+/ACf5Vs6r4X/dH2EgIzR9Vr+H65kg= @@ -276,7 +205,6 @@ github.com/gogo/status v1.1.1/go.mod h1:jpG3dM5QPcqu19Hg8lkUhBFBa3TcLs1DG7+2Jqci github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -286,7 +214,6 @@ github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= @@ -295,15 +222,12 @@ github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= @@ -312,20 +236,19 @@ github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8l github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/flatbuffers v1.11.0 h1:O7CEyB8Cb3/DmtxODGtLHcEvpr81Jm5qLg/hsHnxA2A= github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= +github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= @@ -338,23 +261,17 @@ github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OI github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= github.com/google/protobuf v3.11.4+incompatible/go.mod h1:lUQ9D1ePzbH2PrIS7ob/bjm9HXyH5WHB0Akwh7URreM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= -github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw= -github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/goreleaser/fileglob v1.3.0 h1:/X6J7U8lbDpQtBvGcwwPS6OpzkNVlVEsFUVRx9+k+7I= github.com/goreleaser/fileglob v1.3.0/go.mod h1:Jx6BoXv3mbYkEzwm9THo7xbr5egkAraxkGorbJb4RxU= github.com/goreleaser/goreleaser v1.24.0 h1:jsoS5T2CvPKOyECPATAo8hCvUaX8ok4iAq9m5Zyl1L0= @@ -364,65 +281,43 @@ github.com/goreleaser/nfpm/v2 v2.35.3/go.mod h1:eyKRLSdXPCV1GgJ0tDNe4SqcZD0Fr5ce github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v0.0.0-20180715044906-d6c0cd880357/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-memdb v1.3.4 h1:XSL3NR682X/cVk2IeV0d70N4DZ9ljI885xAEU8IoK3c= github.com/hashicorp/go-memdb v1.3.4/go.mod h1:uBTr1oQbtuMgd1SSGoR8YV27eT3sBHbYiNm53bMpgSg= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v0.0.0-20180717150148-3d5d8f294aa0/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v0.0.0-20180228145832-27454136f036/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v0.0.0-20180404174102-ef8a98b0bbce/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM= github.com/hashicorp/hcl v1.0.1-vault-5/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= @@ -494,26 +389,16 @@ github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/jolestar/go-commons-pool v2.0.0+incompatible h1:uHn5uRKsLLQSf9f1J5QPY2xREWx/YH+e4bIIXcAuAaE= github.com/jolestar/go-commons-pool v2.0.0+incompatible/go.mod h1:ChJYIbIch0DMCSU6VU0t0xhPoWDR2mMFIQek3XWU0s8= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jstemmer/go-junit-report/v2 v2.0.0 h1:bMZNO9B16VFn07tKyi4YJFIbZtVmJaa5Xakv9dcwK58= github.com/jstemmer/go-junit-report/v2 v2.0.0/go.mod h1:mgHVr7VUo5Tn8OLVr1cKnLuEy0M92wdRntM99h7RkgQ= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= @@ -523,8 +408,6 @@ github.com/klauspost/compress v1.17.5 h1:d4vBd+7CHydUqpFBgUEKkSdtSugf9YFmSkvUYPq github.com/klauspost/compress v1.17.5/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -547,30 +430,22 @@ github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhn github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= github.com/linkedin/goavro/v2 v2.9.8 h1:jN50elxBsGBDGVDEKqUlDuU1cFwJ11K/yrJCBMe/7Wg= github.com/linkedin/goavro/v2 v2.9.8/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA= -github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/magefile/mage v1.14.0 h1:6QDX3g6z1YvJ4olPhT1wksUcSa/V0a1B+pJb73fBjyo= github.com/magefile/mage v1.14.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= @@ -578,7 +453,6 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= @@ -587,35 +461,20 @@ github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwp github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/mattn/go-zglob v0.0.4 h1:LQi2iOm0/fGgu80AioIJ/1j9w9Oh+9DZ39J4VAGzHQM= github.com/mattn/go-zglob v0.0.4/go.mod h1:MxxjyoXXnMxfIpxTK2GAkw1w8glPsQILx3N5wrKakiY= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= github.com/microcosm-cc/bluemonday v1.0.25 h1:4NEwSfiJ+Wva0VxN5B8OwMicaJvD8r9tlJWm9rtloEg= github.com/microcosm-cc/bluemonday v1.0.25/go.mod h1:ZIOjCQp1OrzBBPIJmfX4qDYFuhU02nx4bn030ixfHLE= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v0.0.0-20180715050151-f15292f7a699/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= @@ -627,44 +486,32 @@ github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw= -github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/ginkgo/v2 v2.4.0 h1:+Ig9nvqgS5OBSACXNk15PLdp0U9XPYROt9CFzVdFGIs= +github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= +github.com/onsi/gomega v1.23.0 h1:/oxKu9c2HVap+F3PfKort2Hw5DEU+HGlW8n+tguWsys= +github.com/onsi/gomega v1.23.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= github.com/openconfig/gnmi v0.0.0-20200414194230-1597cc0f2600/go.mod h1:M/EcuapNQgvzxo1DDXHK4tx3QpYM/uG4l591v33jG2A= github.com/openconfig/goyang v0.0.0-20200115183954-d0a48929f0ea/go.mod h1:dhXaV0JgHJzdrHi2l+w0fZrwArtXL7jEFoiqLEdmkvU= github.com/openconfig/goyang v1.2.0 h1:mChUZvp1kCWq6Q00wVCtOToddFzEsGlMGG+V+wNXva8= github.com/openconfig/goyang v1.2.0/go.mod h1:vX61x01Q46AzbZUzG617vWqh/cB+aisc+RrNkXRd3W8= github.com/openconfig/ygot v0.6.0/go.mod h1:o30svNf7O0xK+R35tlx95odkDmZWS9JyWWQSmIhqwAs= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= github.com/pborman/getopt v0.0.0-20180729010549-6fdd0a2c7117/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= github.com/pborman/getopt v0.0.0-20190409184431-ee0cd42419d3/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o= github.com/pelletier/go-toml v0.0.0-20180724185102-c2dbbc24a979/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= @@ -673,44 +520,23 @@ github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v4 v4.1.8 h1:ieHkV+i2BRzngO4Wd/3HGowuZStgq6QkPsD1eolNAO4= github.com/pierrec/lz4/v4 v4.1.8/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/pquerna/cachecontrol v0.1.0 h1:yJMy84ti9h/+OEWa752kBTKv4XC30OtVVHYv/8cTqKc= github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/redis/go-redis/extra/redisprometheus/v9 v9.0.5 h1:kvl0LOTQD23VR1R7A9vDti9msfV6mOE2+j6ngYkFsfg= @@ -726,7 +552,6 @@ github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJ github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.2 h1:YwD0ulJSJytLpiaWua0sBDusfsCZohxjxzVTYjwxfV8= github.com/rivo/uniseg v0.4.2/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= @@ -734,62 +559,41 @@ github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUz github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/segmentio/fasthash v1.0.3 h1:EI9+KE1EwvMLBWwjpRDc+fEM+prwxDYbslddQGtrmhM= github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.2.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.0-20180820174524-ff0d02e85550/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/jwalterweatherman v0.0.0-20180814060501-14d3d4c51834/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v0.0.0-20180821114517-d929dcbb1086/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.1.0/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= @@ -811,11 +615,8 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/weaveworks/promrus v1.2.0 h1:jOLf6pe6/vss4qGHjXmGz4oDJQA+AOCqEL3FvvZGz7M= github.com/weaveworks/promrus v1.2.0/go.mod h1:SaE82+OJ91yqjrE1rsvBWVzNZKcHYFtMUyS1+Ogs/KA= github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= @@ -831,16 +632,14 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1: github.com/xeipuuv/gojsonschema v0.0.0-20180816142147-da425ebb7609/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xitongsys/parquet-go v1.5.1/go.mod h1:xUxwM8ELydxh4edHGegYq1pA8NnMKDx0K/GyB0o2bww= github.com/xitongsys/parquet-go v1.6.2 h1:MhCaXii4eqceKPu9BwrjLqyK10oX9WF+xGhwvwbw7xM= github.com/xitongsys/parquet-go v1.6.2/go.mod h1:IulAQyalCm0rPiZVNnCgm/PCL64X2tdSVGMQ/UeKqWA= github.com/xitongsys/parquet-go-source v0.0.0-20190524061010-2b72cbee77d5/go.mod h1:xxCx7Wpym/3QCo6JhujJX51dzSXrwmb0oH6FQb39SEA= github.com/xitongsys/parquet-go-source v0.0.0-20200817004010-026bad9b25d0 h1:a742S4V5A15F93smuVxA60LQWsrCnN8bKeWDBARU1/k= github.com/xitongsys/parquet-go-source v0.0.0-20200817004010-026bad9b25d0/go.mod h1:HYhIKsdns7xz80OgkbgJYrtQY7FjHWHKH6cvN7+czGE= -github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca h1:1CFlNzQhALwjS9mBAUkycX616GzgsuYUOCHA5+HSlXI= -github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/xlab/treeprint v1.1.0 h1:G/1DjNkPpfZCFt9CSh6b5/nY4VimlbHF3Rh4obvtzDk= +github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -852,24 +651,12 @@ github.com/yuin/goldmark v1.5.4/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5ta github.com/yuin/goldmark-emoji v1.0.2 h1:c/RgTShNgHTtc6xdz2KKI74jJr6rWi7FPgnP9GAsO5s= github.com/yuin/goldmark-emoji v1.0.2/go.mod h1:RhP/RWpexdp+KHs7ghKnifRoIs/Bq4nDS7tRbCkOwKY= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.mongodb.org/mongo-driver v1.13.1 h1:YIc7HTYsKndGK4RFzJ3covLz1byri52x0IoMB0Pt/vk= go.mongodb.org/mongo-driver v1.13.1/go.mod h1:wcDf1JBCXy2mOW0bWHwO/IOYqdca1MPCwDtFu/Z9+eo= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= -go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= -go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= -go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= -go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 h1:+FNtrFTmVw0YZGpBGX56XDee331t6JAXeK2bcyhLOOc= go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -890,11 +677,8 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= golang.org/x/crypto v0.0.0-20180723164146-c126467f60eb/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -904,9 +688,7 @@ golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= @@ -937,8 +719,6 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -953,40 +733,27 @@ golang.org/x/mod v0.15.0 h1:SernR4v+D55NyBH2QiEQrlBAnj1ECL6AGrA5+dPaMY8= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= @@ -1005,19 +772,13 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180821044426-4ea2f632f6e9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1031,37 +792,25 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1073,7 +822,6 @@ golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= @@ -1084,7 +832,6 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= @@ -1094,24 +841,20 @@ golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1120,7 +863,6 @@ golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1136,12 +878,9 @@ golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ= golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= @@ -1164,7 +903,6 @@ google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsb google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1190,12 +928,10 @@ google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg= google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY= google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= @@ -1205,7 +941,6 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go. google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -1214,9 +949,6 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1225,28 +957,22 @@ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQ google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo= @@ -1255,16 +981,13 @@ gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mN gopkg.in/jcmturner/gokrb5.v7 v7.3.0/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.4.1 h1:H0TmLt7/KmzlrDOpa1F+zr0Tk90PbJYBfsVUmRLrf9Y= gopkg.in/square/go-jose.v2 v2.4.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1275,44 +998,32 @@ gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.22.4 h1:UvyHW0ezB2oIgHAxlYoo6UJQObYXU7awuNarwoHEOjw= -k8s.io/api v0.22.4/go.mod h1:Rgs+9gIGYC5laXQSZZ9JqT5NevNgoGiOdVWi1BAB3qk= -k8s.io/apimachinery v0.22.4 h1:9uwcvPpukBw/Ri0EUmWz+49cnFtaoiyEhQTK+xOe7Ck= -k8s.io/apimachinery v0.22.4/go.mod h1:yU6oA6Gnax9RrxGzVvPFFJ+mpnW6PBSqp0sx0I0HHW0= -k8s.io/cli-runtime v0.22.4 h1:uFSVSdW14JP53BCtMRsw1hB9ba21TBuUb5m7RvEsH0Y= -k8s.io/cli-runtime v0.22.4/go.mod h1:x35r0ERHXr/MrbR1C6MPJxQ3xKG6+hXi9m2xLzlMPZA= -k8s.io/client-go v0.22.4 h1:aAQ1Wk+I3bjCNk35YWUqbaueqrIonkfDPJSPDDe8Kfg= -k8s.io/client-go v0.22.4/go.mod h1:Yzw4e5e7h1LNHA4uqnMVrpEpUs1hJOiuBsJKIlRCHDA= -k8s.io/code-generator v0.22.4/go.mod h1:qjYl54pQ/emhkT0UxbufbREYJMWsHNNV/jSVwhYZQGw= -k8s.io/component-base v0.22.4/go.mod h1:MrSaQy4a3tFVViff8TZL6JHYSewNCLshZCwHYM58v5A= -k8s.io/component-helpers v0.22.4 h1:Pso4iXoY6aYLCYQlNkME2MSJvAXo/7lnJYsWHdC6tvE= -k8s.io/component-helpers v0.22.4/go.mod h1:A50qTyczDFbhZDifIfS2zFrHuPk9UNOWPpvNZ+3RSIs= -k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= +k8s.io/api v0.26.15 h1:tjMERUjIwkq+2UtPZL5ZbSsLkpxUv4gXWZfV5lQl+Og= +k8s.io/api v0.26.15/go.mod h1:CtWOrFl8VLCTLolRlhbBxo4fy83tjCLEtYa5pMubIe0= +k8s.io/apimachinery v0.26.15 h1:GPxeERYBSqSZlj3xIkX4L6mBjzZ9q8JPnJ+Vj15qe+g= +k8s.io/apimachinery v0.26.15/go.mod h1:O/uIhIOWuy6ndHqQ6qbkjD7OgeMhVtlk8+Z66ZcmJQc= +k8s.io/cli-runtime v0.26.15 h1:+y3am0YLVBEfe4je5taxVUM8EKQKnUqzmXBdn3Ytxko= +k8s.io/cli-runtime v0.26.15/go.mod h1:AXABAdbXP0xeIJV4SpJ1caMR7FY8GjXTxMsJ5/1iMF0= +k8s.io/client-go v0.26.15 h1:A2Yav2v+VZQfpEsf5ESFp2Lqq5XACKBDrwkG+jEtOg0= +k8s.io/client-go v0.26.15/go.mod h1:KJs7snLEyKPlypqTQG/ngcaqE6h3/6qTvVHDViRL+iI= +k8s.io/component-helpers v0.26.15 h1:2ln2voQ6oLMUKzksr29g47iE1Y0rLdB+2KICF8F1f5Q= +k8s.io/component-helpers v0.26.15/go.mod h1:UwLS62rpGU8sIJfnBWChicMdf14y9hdu5DXicHay4Hk= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c h1:jvamsI1tn9V0S8jicyX82qaFC0H/NKxv2e5mbqsgR80= -k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kubectl v0.22.4 h1:ECUO1QWyZ70DiIKEfgBx+8i9D98uspVOwgc1APs/07w= -k8s.io/kubectl v0.22.4/go.mod h1:ok2qRT6y2Gy4+y+mniJVyUMKeBHP4OWS9Rdtf/QTM5I= -k8s.io/kubelet v0.22.4 h1:0eaVDObhAuDCDnQJS9xqgfAP5/IWHMt6un4L/DQs0so= -k8s.io/kubelet v0.22.4/go.mod h1:9dCtyqqDnXJYF9E2mejBmDQb+flkAGFBzGgnlW/goyo= -k8s.io/metrics v0.22.4/go.mod h1:6F/iwuYb1w2QDCoHkeMFLf4pwHBcYKLm4mPtVHKYrIw= -k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 h1:+70TFaan3hfJzs+7VK2o+OGxg8HsuBr/5f6tVAjDu6E= +k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= +k8s.io/kubectl v0.26.15 h1:Q118/ZVWmUYEm6Iod8MKuxQFwTBBopBogGq5tkudvhg= +k8s.io/kubectl v0.26.15/go.mod h1:JgN3H70qdFjI/93T91gVOAsSExxNmccoCQLDNX//aYw= +k8s.io/kubelet v0.26.15 h1:zf6epB3dqA5bperYLhyuFr+gQQ9qasM95cyeKAuodZc= +k8s.io/kubelet v0.26.15/go.mod h1:8g/EzBlR1ByT5jkYbH9iaCNCFKDUNhHj4cx38UrtyiY= +k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0 h1:jgGTlFYnhF1PM1Ax/lAlxUPE+KfCIXHaathvJg1C3ak= +k8s.io/utils v0.0.0-20240502163921-fe8a2dddb1d0/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI= lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw= @@ -1344,16 +1055,14 @@ modernc.org/z v1.7.3/go.mod h1:Ipv4tsdxZRbQyLq9Q1M6gdbkxYzdlrciF2Hi/lS7nWE= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/kustomize/api v0.8.11 h1:LzQzlq6Z023b+mBtc6v72N2mSHYmN8x7ssgbf/hv0H8= -sigs.k8s.io/kustomize/api v0.8.11/go.mod h1:a77Ls36JdfCWojpUqR6m60pdGY1AYFix4AH83nJtY1g= -sigs.k8s.io/kustomize/cmd/config v0.9.13/go.mod h1:7547FLF8W/lTaDf0BDqFTbZxM9zqwEJqCKN9sSR0xSs= -sigs.k8s.io/kustomize/kustomize/v4 v4.2.0/go.mod h1:MOkR6fmhwG7hEDRXBYELTi5GSFcLwfqwzTRHW3kv5go= -sigs.k8s.io/kustomize/kyaml v0.11.0 h1:9KhiCPKaVyuPcgOLJXkvytOvjMJLoxpjodiycb4gHsA= -sigs.k8s.io/kustomize/kyaml v0.11.0/go.mod h1:GNMwjim4Ypgp/MueD3zXHLRJEjz7RvtPae0AwlvEMFM= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.1.2 h1:Hr/htKFmJEbtMgS/UD0N+gtgctAqz81t3nu+sPzynno= -sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k= +sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/kustomize/api v0.12.1 h1:7YM7gW3kYBwtKvoY216ZzY+8hM+lV53LUayghNRJ0vM= +sigs.k8s.io/kustomize/api v0.12.1/go.mod h1:y3JUhimkZkR6sbLNwfJHxvo1TCLwuwm14sCYnkH6S1s= +sigs.k8s.io/kustomize/kyaml v0.13.9 h1:Qz53EAaFFANyNgyOEJbT/yoIHygK40/ZcvU3rgry2Tk= +sigs.k8s.io/kustomize/kyaml v0.13.9/go.mod h1:QsRbD0/KcU+wdk0/L0fIp2KLnohkVzs6fQ85/nOXac4= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/internal/armada/submit/submit.go b/internal/armada/submit/submit.go index a99b9590b26..f66a4dc7434 100644 --- a/internal/armada/submit/submit.go +++ b/internal/armada/submit/submit.go @@ -8,7 +8,7 @@ import ( "github.com/gogo/status" log "github.com/sirupsen/logrus" "google.golang.org/grpc/codes" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/armada/configuration" "github.com/armadaproject/armada/internal/armada/permissions" diff --git a/internal/armada/submit/submit_test.go b/internal/armada/submit/submit_test.go index 95f44b40440..5572bc67a1d 100644 --- a/internal/armada/submit/submit_test.go +++ b/internal/armada/submit/submit_test.go @@ -8,7 +8,7 @@ import ( "github.com/stretchr/testify/assert" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" - "k8s.io/apimachinery/pkg/util/clock" + clock "k8s.io/utils/clock/testing" "k8s.io/utils/pointer" "github.com/armadaproject/armada/internal/armada/mocks" diff --git a/internal/common/auth/kubernetes.go b/internal/common/auth/kubernetes.go index 0713bdac912..c81c9da9779 100644 --- a/internal/common/auth/kubernetes.go +++ b/internal/common/auth/kubernetes.go @@ -9,14 +9,13 @@ import ( "strings" "time" - "k8s.io/apimachinery/pkg/util/clock" - "github.com/grpc-ecosystem/go-grpc-middleware/util/metautils" "github.com/patrickmn/go-cache" authv1 "k8s.io/api/authentication/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/common/armadaerrors" "github.com/armadaproject/armada/internal/common/auth/configuration" diff --git a/internal/common/auth/kubernetes_test.go b/internal/common/auth/kubernetes_test.go index 007883f9ec1..d178a8390a3 100644 --- a/internal/common/auth/kubernetes_test.go +++ b/internal/common/auth/kubernetes_test.go @@ -13,7 +13,7 @@ import ( "github.com/patrickmn/go-cache" "github.com/stretchr/testify/assert" authv1 "k8s.io/api/authentication/v1" - "k8s.io/apimachinery/pkg/util/clock" + clock "k8s.io/utils/clock/testing" "github.com/armadaproject/armada/internal/common/auth/configuration" ) diff --git a/internal/common/ingest/batch.go b/internal/common/ingest/batch.go index 5607714e235..52284e41b90 100644 --- a/internal/common/ingest/batch.go +++ b/internal/common/ingest/batch.go @@ -5,7 +5,7 @@ import ( "time" log "github.com/sirupsen/logrus" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/common/armadacontext" ) diff --git a/internal/common/ingest/batch_test.go b/internal/common/ingest/batch_test.go index a906dbc8258..3160303dd54 100644 --- a/internal/common/ingest/batch_test.go +++ b/internal/common/ingest/batch_test.go @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "k8s.io/apimachinery/pkg/util/clock" + clock "k8s.io/utils/clock/testing" "github.com/armadaproject/armada/internal/common/armadacontext" ) diff --git a/internal/executor/application.go b/internal/executor/application.go index de77e5c9f70..e26b6ec57ff 100644 --- a/internal/executor/application.go +++ b/internal/executor/application.go @@ -14,7 +14,7 @@ import ( "github.com/sirupsen/logrus" "google.golang.org/grpc" "google.golang.org/grpc/keepalive" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/common/armadacontext" "github.com/armadaproject/armada/internal/common/cluster" @@ -144,7 +144,11 @@ func StartUpWithContext( stopExecutorApiComponents := setupExecutorApiComponents(log, config, clusterContext, clusterHealthMonitor, taskManager, pendingPodChecker, nodeInfoService, podUtilisationService) - resourceCleanupService := service.NewResourceCleanupService(clusterContext, config.Kubernetes) + resourceCleanupService, err := service.NewResourceCleanupService(clusterContext, config.Kubernetes) + if err != nil { + log.Errorf("Error creating resource cleanup service: %s", err) + os.Exit(-1) + } taskManager.Register(resourceCleanupService.CleanupResources, config.Task.ResourceCleanupInterval, "resource_cleanup") if config.Metric.ExposeQueueUsageMetrics { @@ -192,12 +196,16 @@ func setupExecutorApiComponents( config.Kubernetes.MinimumResourcesMarkedAllocatedToNonArmadaPodsPerNodePriority, ) - eventReporter, stopReporter := reporter.NewJobEventReporter( + eventReporter, stopReporter, err := reporter.NewJobEventReporter( clusterContext, jobRunState, eventSender, clock.RealClock{}, 200) + if err != nil { + log.Errorf("Failed to create job event reporter: %s", err) + os.Exit(-1) + } submitter := job.NewSubmitter( clusterContext, @@ -227,7 +235,7 @@ func setupExecutorApiComponents( submitter, clusterHealthMonitor, ) - podIssueService := service.NewIssueHandler( + podIssueService, err := service.NewIssueHandler( jobRunState, clusterContext, eventReporter, @@ -235,6 +243,10 @@ func setupExecutorApiComponents( pendingPodChecker, config.Kubernetes.StuckTerminatingPodExpiry, ) + if err != nil { + log.Errorf("Failed to create pod issue service: %s", err) + os.Exit(-1) + } taskManager.Register(podIssueService.HandlePodIssues, config.Task.PodIssueHandlingInterval, "pod_issue_handling") taskManager.Register(preemptRunProcessor.Run, config.Task.StateProcessorInterval, "preempt_runs") @@ -242,16 +254,24 @@ func setupExecutorApiComponents( taskManager.Register(jobRequester.RequestJobsRuns, config.Task.AllocateSpareClusterCapacityInterval, "request_runs") taskManager.Register(clusterAllocationService.AllocateSpareClusterCapacity, config.Task.AllocateSpareClusterCapacityInterval, "submit_runs") taskManager.Register(eventReporter.ReportMissingJobEvents, config.Task.MissingJobEventReconciliationInterval, "event_reconciliation") - pod_metrics.ExposeClusterContextMetrics(clusterContext, clusterUtilisationService, podUtilisationService, nodeInfoService) + _, err = pod_metrics.ExposeClusterContextMetrics(clusterContext, clusterUtilisationService, podUtilisationService, nodeInfoService) + if err != nil { + log.Errorf("Failed to setup cluster context metrics: %s", err) + os.Exit(-1) + } runStateMetricsCollector := runstate.NewJobRunStateStoreMetricsCollector(jobRunState) prometheus.MustRegister(runStateMetricsCollector) if config.Metric.ExposeQueueUsageMetrics && config.Task.UtilisationEventReportingInterval > 0 { - podUtilisationReporter := utilisation.NewUtilisationEventReporter( + podUtilisationReporter, err := utilisation.NewUtilisationEventReporter( clusterContext, podUtilisationService, eventReporter, config.Task.UtilisationEventReportingInterval) + if err != nil { + log.Errorf("Failed to pod utilisation reporter: %s", err) + os.Exit(-1) + } taskManager.Register( podUtilisationReporter.ReportUtilisationEvents, config.Task.UtilisationEventProcessingInterval, diff --git a/internal/executor/context/cluster_context.go b/internal/executor/context/cluster_context.go index 0d71efa3593..53773658e45 100644 --- a/internal/executor/context/cluster_context.go +++ b/internal/executor/context/cluster_context.go @@ -15,7 +15,6 @@ import ( "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/selection" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/clock" "k8s.io/client-go/informers" informer "k8s.io/client-go/informers/core/v1" discovery_informer "k8s.io/client-go/informers/discovery/v1" @@ -23,6 +22,7 @@ import ( "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/cache" "k8s.io/kubelet/pkg/apis/stats/v1alpha1" + "k8s.io/utils/clock" "k8s.io/utils/pointer" "github.com/armadaproject/armada/internal/common/armadacontext" @@ -43,7 +43,7 @@ type ClusterIdentity interface { type ClusterContext interface { ClusterIdentity - AddPodEventHandler(handler cache.ResourceEventHandlerFuncs) + AddPodEventHandler(handler cache.ResourceEventHandlerFuncs) (cache.ResourceEventHandlerRegistration, error) GetBatchPods() ([]*v1.Pod, error) GetAllPods() ([]*v1.Pod, error) GetActiveBatchPods() ([]*v1.Pod, error) @@ -124,7 +124,7 @@ func NewClusterContext( clock: clock.RealClock{}, } - context.AddPodEventHandler(cache.ResourceEventHandlerFuncs{ + _, err := context.AddPodEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { pod, ok := obj.(*v1.Pod) if !ok { @@ -134,6 +134,9 @@ func NewClusterContext( context.submittedPods.Delete(util.ExtractPodKey(pod)) }, }) + if err != nil { + panic(err) + } // Use node informer so it is initialised properly context.nodeInformer.Lister() @@ -141,7 +144,7 @@ func NewClusterContext( context.ingressInformer.Lister() context.endpointSliceInformer.Lister() - err := context.eventInformer.Informer().AddIndexers(cache.Indexers{podByUIDIndex: indexPodByUID}) + err = context.eventInformer.Informer().AddIndexers(cache.Indexers{podByUIDIndex: indexPodByUID}) if err != nil { panic(err) } @@ -160,8 +163,8 @@ func indexPodByUID(obj interface{}) (strings []string, err error) { return []string{string(event.InvolvedObject.UID)}, nil } -func (c *KubernetesClusterContext) AddPodEventHandler(handler cache.ResourceEventHandlerFuncs) { - c.podInformer.Informer().AddEventHandler(handler) +func (c *KubernetesClusterContext) AddPodEventHandler(handler cache.ResourceEventHandlerFuncs) (cache.ResourceEventHandlerRegistration, error) { + return c.podInformer.Informer().AddEventHandler(handler) } func (c *KubernetesClusterContext) Stop() { diff --git a/internal/executor/context/cluster_context_test.go b/internal/executor/context/cluster_context_test.go index b382cd0e690..ad3b0a08b54 100644 --- a/internal/executor/context/cluster_context_test.go +++ b/internal/executor/context/cluster_context_test.go @@ -15,11 +15,11 @@ import ( "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/clock" "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/fake" "k8s.io/client-go/rest" clientTesting "k8s.io/client-go/testing" + clock "k8s.io/utils/clock/testing" "k8s.io/utils/pointer" "github.com/armadaproject/armada/internal/common/armadacontext" diff --git a/internal/executor/context/fake/sync_cluster_context.go b/internal/executor/context/fake/sync_cluster_context.go index db997a6b720..c966aed357d 100644 --- a/internal/executor/context/fake/sync_cluster_context.go +++ b/internal/executor/context/fake/sync_cluster_context.go @@ -34,8 +34,9 @@ func NewSyncFakeClusterContext() *SyncFakeClusterContext { func (*SyncFakeClusterContext) Stop() {} -func (c *SyncFakeClusterContext) AddPodEventHandler(handler cache.ResourceEventHandlerFuncs) { +func (c *SyncFakeClusterContext) AddPodEventHandler(handler cache.ResourceEventHandlerFuncs) (cache.ResourceEventHandlerRegistration, error) { c.podEventHandlers = append(c.podEventHandlers, &handler) + return nil, nil } func (c *SyncFakeClusterContext) GetBatchPods() ([]*v1.Pod, error) { diff --git a/internal/executor/fake/context/context.go b/internal/executor/fake/context/context.go index f15c68b5d43..8a82e881c5c 100644 --- a/internal/executor/fake/context/context.go +++ b/internal/executor/fake/context/context.go @@ -89,8 +89,9 @@ func NewFakeClusterContext(appConfig configuration.ApplicationConfiguration, nod func (*FakeClusterContext) Stop() { } -func (c *FakeClusterContext) AddPodEventHandler(handler cache.ResourceEventHandlerFuncs) { +func (c *FakeClusterContext) AddPodEventHandler(handler cache.ResourceEventHandlerFuncs) (cache.ResourceEventHandlerRegistration, error) { c.podEventHandlers = append(c.podEventHandlers, &handler) + return nil, nil } func (c *FakeClusterContext) GetBatchPods() ([]*v1.Pod, error) { diff --git a/internal/executor/job/job_run_state_store.go b/internal/executor/job/job_run_state_store.go index 49fa498fa45..dfe648fd7eb 100644 --- a/internal/executor/job/job_run_state_store.go +++ b/internal/executor/job/job_run_state_store.go @@ -40,7 +40,7 @@ func NewJobRunStateStore(clusterContext context.ClusterContext) *JobRunStateStor clusterContext: clusterContext, } - clusterContext.AddPodEventHandler(cache.ResourceEventHandlerFuncs{ + _, err := clusterContext.AddPodEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { pod, ok := obj.(*v1.Pod) if !ok { @@ -53,9 +53,12 @@ func NewJobRunStateStore(clusterContext context.ClusterContext) *JobRunStateStor } }, }) + if err != nil { + panic(err) + } // On start up, make sure our state matches current k8s state - err := stateStore.initialiseStateFromKubernetes() + err = stateStore.initialiseStateFromKubernetes() if err != nil { panic(err) } diff --git a/internal/executor/metrics/pod_metrics/cluster_context.go b/internal/executor/metrics/pod_metrics/cluster_context.go index 5c82269e11a..e86881411b1 100644 --- a/internal/executor/metrics/pod_metrics/cluster_context.go +++ b/internal/executor/metrics/pod_metrics/cluster_context.go @@ -79,7 +79,7 @@ func ExposeClusterContextMetrics( utilisationService utilisation.UtilisationService, queueUtilisationService utilisation.PodUtilisationService, nodeInfoService node.NodeInfoService, -) *ClusterContextMetrics { +) (*ClusterContextMetrics, error) { m := &ClusterContextMetrics{ context: context, utilisationService: utilisationService, @@ -94,7 +94,7 @@ func ExposeClusterContextMetrics( []string{queueLabel, phaseLabel}), } - context.AddPodEventHandler(cache.ResourceEventHandlerFuncs{ + _, err := context.AddPodEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { pod, ok := obj.(*v1.Pod) if !ok { @@ -111,8 +111,11 @@ func ExposeClusterContextMetrics( m.reportPhase(newPod) }, }) + if err != nil { + return nil, err + } prometheus.MustRegister(m) - return m + return m, nil } func (m *ClusterContextMetrics) reportPhase(pod *v1.Pod) { diff --git a/internal/executor/reporter/job_event_reporter.go b/internal/executor/reporter/job_event_reporter.go index 8bfb465ca83..002b2d8d833 100644 --- a/internal/executor/reporter/job_event_reporter.go +++ b/internal/executor/reporter/job_event_reporter.go @@ -6,8 +6,8 @@ import ( log "github.com/sirupsen/logrus" v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/util/clock" "k8s.io/client-go/tools/cache" + "k8s.io/utils/clock" clusterContext "github.com/armadaproject/armada/internal/executor/context" domain2 "github.com/armadaproject/armada/internal/executor/domain" @@ -33,7 +33,7 @@ type JobEventReporter struct { jobRunStateStore *job.JobRunStateStore clusterContext clusterContext.ClusterContext - clock clock.Clock + clock clock.WithTicker maxBatchSize int } @@ -41,9 +41,9 @@ func NewJobEventReporter( clusterContext clusterContext.ClusterContext, jobRunState *job.JobRunStateStore, eventSender EventSender, - clock clock.Clock, + clock clock.WithTicker, maxBatchSize int, -) (*JobEventReporter, chan bool) { +) (*JobEventReporter, chan bool, error) { stop := make(chan bool) reporter := &JobEventReporter{ eventSender: eventSender, @@ -56,11 +56,14 @@ func NewJobEventReporter( maxBatchSize: maxBatchSize, } - clusterContext.AddPodEventHandler(reporter.podEventHandler()) + _, err := clusterContext.AddPodEventHandler(reporter.podEventHandler()) + if err != nil { + return nil, nil, err + } go reporter.processEventQueue(stop) - return reporter, stop + return reporter, stop, nil } func (eventReporter *JobEventReporter) podEventHandler() cache.ResourceEventHandlerFuncs { diff --git a/internal/executor/reporter/job_event_reporter_test.go b/internal/executor/reporter/job_event_reporter_test.go index 05135308472..d90076a24b9 100644 --- a/internal/executor/reporter/job_event_reporter_test.go +++ b/internal/executor/reporter/job_event_reporter_test.go @@ -11,7 +11,7 @@ import ( v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/clock" + clock "k8s.io/utils/clock/testing" util2 "github.com/armadaproject/armada/internal/common/util" fakecontext "github.com/armadaproject/armada/internal/executor/context/fake" @@ -48,7 +48,8 @@ func TestRequiresIngressToBeReported_TrueWhenHasIngressButNotIngressReportedAnno } func TestJobEventReporter_SendsEventImmediately_OnceNumberOfWaitingEventsMatchesBatchSize(t *testing.T) { - jobEventReporter, eventSender, _ := setupBatchEventsTest(2) + jobEventReporter, eventSender, _, err := setupBatchEventsTest(2) + require.NoError(t, err) pod1 := createPod(1) pod2 := createPod(2) @@ -66,7 +67,8 @@ func TestJobEventReporter_SendsEventImmediately_OnceNumberOfWaitingEventsMatches } func TestJobEventReporter_SendsAllEventsInBuffer_EachBatchTickInterval(t *testing.T) { - jobEventReporter, eventSender, testClock := setupBatchEventsTest(2) + jobEventReporter, eventSender, testClock, err := setupBatchEventsTest(2) + require.NoError(t, err) pod1 := createPod(1) jobEventReporter.QueueEvent(EventMessage{createFailedEvent(t, pod1), util.ExtractJobRunId(pod1)}, func(err error) {}) @@ -88,13 +90,13 @@ func createFailedEvent(t *testing.T, pod *v1.Pod) *armadaevents.EventSequence { return event } -func setupBatchEventsTest(batchSize int) (*JobEventReporter, *FakeEventSender, *clock.FakeClock) { +func setupBatchEventsTest(batchSize int) (*JobEventReporter, *FakeEventSender, *clock.FakeClock, error) { executorContext := fakecontext.NewSyncFakeClusterContext() eventSender := NewFakeEventSender() jobRunState := job.NewJobRunStateStore(executorContext) testClock := clock.NewFakeClock(time.Now()) - jobEventReporter, _ := NewJobEventReporter(executorContext, jobRunState, eventSender, testClock, batchSize) - return jobEventReporter, eventSender, testClock + jobEventReporter, _, err := NewJobEventReporter(executorContext, jobRunState, eventSender, testClock, batchSize) + return jobEventReporter, eventSender, testClock, err } func createPod(index int) *v1.Pod { diff --git a/internal/executor/service/pod_issue_handler.go b/internal/executor/service/pod_issue_handler.go index ecb9bc8e1e6..0c8b48ea99e 100644 --- a/internal/executor/service/pod_issue_handler.go +++ b/internal/executor/service/pod_issue_handler.go @@ -8,9 +8,9 @@ import ( log "github.com/sirupsen/logrus" v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/util/clock" "k8s.io/client-go/tools/cache" "k8s.io/kubectl/pkg/describe" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/common/armadacontext" "github.com/armadaproject/armada/internal/executor/configuration" @@ -84,7 +84,7 @@ func NewIssueHandler( stateChecksConfig configuration.StateChecksConfiguration, pendingPodChecker podchecks.PodChecker, stuckTerminatingPodExpiry time.Duration, -) *IssueHandler { +) (*IssueHandler, error) { issueHandler := &IssueHandler{ jobRunState: jobRunState, clusterContext: clusterContext, @@ -97,7 +97,7 @@ func NewIssueHandler( clock: clock.RealClock{}, } - clusterContext.AddPodEventHandler(cache.ResourceEventHandlerFuncs{ + _, err := clusterContext.AddPodEventHandler(cache.ResourceEventHandlerFuncs{ DeleteFunc: func(obj interface{}) { pod, ok := obj.(*v1.Pod) if !ok { @@ -107,8 +107,11 @@ func NewIssueHandler( issueHandler.handleDeletedPod(pod) }, }) + if err != nil { + return nil, err + } - return issueHandler + return issueHandler, nil } func (p *IssueHandler) hasIssue(runId string) bool { diff --git a/internal/executor/service/pod_issue_handler_test.go b/internal/executor/service/pod_issue_handler_test.go index bb0899a8562..dd18064fe57 100644 --- a/internal/executor/service/pod_issue_handler_test.go +++ b/internal/executor/service/pod_issue_handler_test.go @@ -11,7 +11,7 @@ import ( v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" - "k8s.io/apimachinery/pkg/util/clock" + clock "k8s.io/utils/clock/testing" commonutil "github.com/armadaproject/armada/internal/common/util" "github.com/armadaproject/armada/internal/executor/configuration" @@ -28,7 +28,8 @@ import ( ) func TestPodIssueService_DoesNothingIfNoPodsAreFound(t *testing.T) { - podIssueService, _, _, eventsReporter := setupTestComponents([]*job.RunState{}) + podIssueService, _, _, eventsReporter, err := setupTestComponents([]*job.RunState{}) + require.NoError(t, err) podIssueService.HandlePodIssues() @@ -36,7 +37,8 @@ func TestPodIssueService_DoesNothingIfNoPodsAreFound(t *testing.T) { } func TestPodIssueService_DoesNothingIfNoStuckPodsAreFound(t *testing.T) { - podIssueService, _, fakeClusterContext, eventsReporter := setupTestComponents([]*job.RunState{}) + podIssueService, _, fakeClusterContext, eventsReporter, err := setupTestComponents([]*job.RunState{}) + require.NoError(t, err) runningPod := makeRunningPod() addPod(t, fakeClusterContext, runningPod) @@ -48,7 +50,8 @@ func TestPodIssueService_DoesNothingIfNoStuckPodsAreFound(t *testing.T) { } func TestPodIssueService_DeletesPodAndReportsFailed_IfStuckAndUnretryable(t *testing.T) { - podIssueService, _, fakeClusterContext, eventsReporter := setupTestComponents([]*job.RunState{}) + podIssueService, _, fakeClusterContext, eventsReporter, err := setupTestComponents([]*job.RunState{}) + require.NoError(t, err) unretryableStuckPod := makeUnretryableStuckPod() addPod(t, fakeClusterContext, unretryableStuckPod) addPodEvents(fakeClusterContext, unretryableStuckPod, []*v1.Event{{Message: "Image pull has failed", Type: "Warning"}}) @@ -74,7 +77,8 @@ func TestPodIssueService_DeletesPodAndReportsFailed_IfStuckAndUnretryable(t *tes } func TestPodIssueService_DeletesPodAndReportsFailed_IfStuckTerminating(t *testing.T) { - podIssueService, _, fakeClusterContext, eventsReporter := setupTestComponents([]*job.RunState{}) + podIssueService, _, fakeClusterContext, eventsReporter, err := setupTestComponents([]*job.RunState{}) + require.NoError(t, err) terminatingPod := makeTerminatingPod() addPod(t, fakeClusterContext, terminatingPod) @@ -116,7 +120,8 @@ func TestPodIssueService_DeletesPodAndReportsFailed_IfExceedsActiveDeadline(t *t for name, tc := range tests { t.Run(name, func(t *testing.T) { - podIssueService, _, fakeClusterContext, eventsReporter := setupTestComponents([]*job.RunState{}) + podIssueService, _, fakeClusterContext, eventsReporter, err := setupTestComponents([]*job.RunState{}) + require.NoError(t, err) addPod(t, fakeClusterContext, tc.pod) podIssueService.HandlePodIssues() @@ -140,7 +145,8 @@ func TestPodIssueService_DeletesPodAndReportsFailed_IfExceedsActiveDeadline(t *t } func TestPodIssueService_DeletesPodAndReportsLeaseReturned_IfRetryableStuckPod(t *testing.T) { - podIssueService, _, fakeClusterContext, eventsReporter := setupTestComponents([]*job.RunState{}) + podIssueService, _, fakeClusterContext, eventsReporter, err := setupTestComponents([]*job.RunState{}) + require.NoError(t, err) retryableStuckPod := makeRetryableStuckPod() addPod(t, fakeClusterContext, retryableStuckPod) addPodEvents(fakeClusterContext, retryableStuckPod, []*v1.Event{{Message: "Some other message", Type: "Warning"}}) @@ -172,7 +178,8 @@ func TestPodIssueService_DeletesPodAndReportsLeaseReturned_IfRetryableStuckPod(t } func TestPodIssueService_DeletesPodAndReportsFailed_IfRetryableStuckPodStartsUpAfterDeletionCalled(t *testing.T) { - podIssueService, _, fakeClusterContext, eventsReporter := setupTestComponents([]*job.RunState{}) + podIssueService, _, fakeClusterContext, eventsReporter, err := setupTestComponents([]*job.RunState{}) + require.NoError(t, err) retryableStuckPod := makeRetryableStuckPod() addPod(t, fakeClusterContext, retryableStuckPod) @@ -209,7 +216,8 @@ func TestPodIssueService_DeletesPodAndReportsFailed_IfRetryableStuckPodStartsUpA } func TestPodIssueService_ReportsFailed_IfDeletedExternally(t *testing.T) { - podIssueService, _, fakeClusterContext, eventsReporter := setupTestComponents([]*job.RunState{}) + podIssueService, _, fakeClusterContext, eventsReporter, err := setupTestComponents([]*job.RunState{}) + require.NoError(t, err) runningPod := makeRunningPod() protoJobId, err := armadaevents.ProtoUuidFromUlidString(util.ExtractJobId(runningPod)) require.NoError(t, err) @@ -234,7 +242,8 @@ func TestPodIssueService_ReportsFailed_IfPodOfActiveRunGoesMissing(t *testing.T) protoJobId, err := armadaevents.ProtoUuidFromUlidString(jobId) require.NoError(t, err) - podIssueService, _, _, eventsReporter := setupTestComponents([]*job.RunState{createRunState(jobId, uuid.New().String(), job.Active)}) + podIssueService, _, _, eventsReporter, err := setupTestComponents([]*job.RunState{createRunState(jobId, uuid.New().String(), job.Active)}) + require.NoError(t, err) podIssueService.clock = fakeClock podIssueService.HandlePodIssues() @@ -258,7 +267,8 @@ func TestPodIssueService_DoesNothing_IfMissingPodOfActiveRunReturns(t *testing.T fakeClock := clock.NewFakeClock(baseTime) runningPod := makeRunningPod() runState := createRunState(util.ExtractJobId(runningPod), util.ExtractJobRunId(runningPod), job.Active) - podIssueService, _, fakeClusterContext, eventsReporter := setupTestComponents([]*job.RunState{runState}) + podIssueService, _, fakeClusterContext, eventsReporter, err := setupTestComponents([]*job.RunState{runState}) + require.NoError(t, err) podIssueService.clock = fakeClock podIssueService.HandlePodIssues() @@ -274,7 +284,8 @@ func TestPodIssueService_DoesNothing_IfMissingPodOfActiveRunReturns(t *testing.T func TestPodIssueService_DeleteRunFromRunState_IfSubmittedPodNeverAppears(t *testing.T) { baseTime := time.Now() fakeClock := clock.NewFakeClock(baseTime) - podIssueService, runStateStore, _, eventsReporter := setupTestComponents([]*job.RunState{createRunState("job-1", "run-1", job.SuccessfulSubmission)}) + podIssueService, runStateStore, _, eventsReporter, err := setupTestComponents([]*job.RunState{createRunState("job-1", "run-1", job.SuccessfulSubmission)}) + require.NoError(t, err) podIssueService.clock = fakeClock podIssueService.HandlePodIssues() @@ -294,7 +305,8 @@ func TestPodIssueService_DoesNothing_IfSubmittedPodAppears(t *testing.T) { fakeClock := clock.NewFakeClock(baseTime) runningPod := makeRunningPod() runState := createRunState(util.ExtractJobId(runningPod), util.ExtractJobRunId(runningPod), job.SuccessfulSubmission) - podIssueService, runStateStore, fakeClusterContext, eventsReporter := setupTestComponents([]*job.RunState{runState}) + podIssueService, runStateStore, fakeClusterContext, eventsReporter, err := setupTestComponents([]*job.RunState{runState}) + require.NoError(t, err) podIssueService.clock = fakeClock podIssueService.HandlePodIssues() @@ -308,7 +320,7 @@ func TestPodIssueService_DoesNothing_IfSubmittedPodAppears(t *testing.T) { assert.Len(t, runStateStore.GetAll(), 1) } -func setupTestComponents(initialRunState []*job.RunState) (*IssueHandler, *job.JobRunStateStore, *fakecontext.SyncFakeClusterContext, *mocks.FakeEventReporter) { +func setupTestComponents(initialRunState []*job.RunState) (*IssueHandler, *job.JobRunStateStore, *fakecontext.SyncFakeClusterContext, *mocks.FakeEventReporter, error) { fakeClusterContext := fakecontext.NewSyncFakeClusterContext() eventReporter := mocks.NewFakeEventReporter() pendingPodChecker := makePodChecker() @@ -318,7 +330,7 @@ func setupTestComponents(initialRunState []*job.RunState) (*IssueHandler, *job.J DeadlineForActivePodConsideredMissing: time.Minute * 5, } - podIssueHandler := NewIssueHandler( + podIssueHandler, err := NewIssueHandler( runStateStore, fakeClusterContext, eventReporter, @@ -327,7 +339,7 @@ func setupTestComponents(initialRunState []*job.RunState) (*IssueHandler, *job.J time.Minute*3, ) - return podIssueHandler, runStateStore, fakeClusterContext, eventReporter + return podIssueHandler, runStateStore, fakeClusterContext, eventReporter, err } func createRunState(jobId string, runId string, phase job.RunPhase) *job.RunState { diff --git a/internal/executor/service/resource_cleanup.go b/internal/executor/service/resource_cleanup.go index e948b37b461..fa432fed2ec 100644 --- a/internal/executor/service/resource_cleanup.go +++ b/internal/executor/service/resource_cleanup.go @@ -21,7 +21,7 @@ type ResourceCleanupService struct { func NewResourceCleanupService( clusterContext clusterContext.ClusterContext, kubernetesConfiguration configuration.KubernetesConfiguration, -) *ResourceCleanupService { +) (*ResourceCleanupService, error) { service := &ResourceCleanupService{ clusterContext: clusterContext, kubernetesConfiguration: kubernetesConfiguration, @@ -37,7 +37,7 @@ func NewResourceCleanupService( So in the case the cleanup below fails, the ownerreference will ensure it is cleaned up when the pod is */ - clusterContext.AddPodEventHandler(cache.ResourceEventHandlerFuncs{ + _, err := clusterContext.AddPodEventHandler(cache.ResourceEventHandlerFuncs{ UpdateFunc: func(oldObj, newObj interface{}) { pod, ok := newObj.(*v1.Pod) if !ok { @@ -49,8 +49,11 @@ func NewResourceCleanupService( } }, }) + if err != nil { + return nil, err + } - return service + return service, nil } func (i *ResourceCleanupService) removeAnyAssociatedIngress(pod *v1.Pod) { diff --git a/internal/executor/service/resource_cleanup_test.go b/internal/executor/service/resource_cleanup_test.go index b228a7e5c3f..bd93e4e1478 100644 --- a/internal/executor/service/resource_cleanup_test.go +++ b/internal/executor/service/resource_cleanup_test.go @@ -5,6 +5,7 @@ import ( "time" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" @@ -18,7 +19,8 @@ import ( ) func TestCleanUpResources_RemovesExpiredResources(t *testing.T) { - s := createResourceCleanupService(time.Second, time.Second, 10) + s, err := createResourceCleanupService(time.Second, time.Second, 10) + require.NoError(t, err) now := time.Now() succeededExpiredPod := makeFinishedPodWithTimestamp(v1.PodSucceeded, now.Add(-1*time.Minute)) @@ -33,7 +35,8 @@ func TestCleanUpResources_RemovesExpiredResources(t *testing.T) { } func TestCleanUpResources_LeavesNonExpiredPods(t *testing.T) { - s := createResourceCleanupService(time.Minute*5, time.Minute*5, 10) + s, err := createResourceCleanupService(time.Minute*5, time.Minute*5, 10) + require.NoError(t, err) now := time.Now() succeededNonExpiredPod := makeFinishedPodWithTimestamp(v1.PodSucceeded, now.Add(-1*time.Minute)) @@ -50,7 +53,8 @@ func TestCleanUpResources_LeavesNonExpiredPods(t *testing.T) { } func TestCleanUpResources_RemovesNonExpiredPodsOverMaxTerminatedPodLimit(t *testing.T) { - s := createResourceCleanupService(time.Minute*5, time.Minute*5, 1) + s, err := createResourceCleanupService(time.Minute*5, time.Minute*5, 1) + require.NoError(t, err) now := time.Now() succeededNonExpiredPod := makeFinishedPodWithTimestamp(v1.PodSucceeded, now.Add(-1*time.Minute)) @@ -66,7 +70,8 @@ func TestCleanUpResources_RemovesNonExpiredPodsOverMaxTerminatedPodLimit(t *test } func TestCanBeRemovedConditions(t *testing.T) { - s := createResourceCleanupService(time.Second, time.Second, 1) + s, err := createResourceCleanupService(time.Second, time.Second, 1) + require.NoError(t, err) pods := map[*v1.Pod]bool{ // should not be cleaned yet makePodWithCurrentStateReported(v1.PodRunning, false): false, @@ -85,7 +90,8 @@ func TestCanBeRemovedConditions(t *testing.T) { } func TestCanBeRemovedMinimumPodTime(t *testing.T) { - s := createResourceCleanupService(5*time.Minute, 10*time.Minute, 1) + s, err := createResourceCleanupService(5*time.Minute, 10*time.Minute, 1) + require.NoError(t, err) now := time.Now() pods := map[*v1.Pod]bool{ // should not be cleaned yet @@ -228,7 +234,7 @@ func addPods(t *testing.T, clusterContext clusterContext.ClusterContext, pods .. } } -func createResourceCleanupService(minimumPodAge, failedPodExpiry time.Duration, maxTerminatedPods int) *ResourceCleanupService { +func createResourceCleanupService(minimumPodAge, failedPodExpiry time.Duration, maxTerminatedPods int) (*ResourceCleanupService, error) { fakeClusterContext := fake.NewSyncFakeClusterContext() kubernetesConfig := configuration.KubernetesConfiguration{ MinimumPodAge: minimumPodAge, diff --git a/internal/executor/utilisation/job_utilisation_reporter.go b/internal/executor/utilisation/job_utilisation_reporter.go index d844f1be6a7..d40ce0919ae 100644 --- a/internal/executor/utilisation/job_utilisation_reporter.go +++ b/internal/executor/utilisation/job_utilisation_reporter.go @@ -35,7 +35,7 @@ func NewUtilisationEventReporter( podUtilisation PodUtilisationService, eventReporter reporter.EventReporter, reportingPeriod time.Duration, -) *UtilisationEventReporter { +) (*UtilisationEventReporter, error) { r := &UtilisationEventReporter{ clusterContext: clusterContext, podUtilisation: podUtilisation, @@ -44,7 +44,7 @@ func NewUtilisationEventReporter( podInfo: map[string]*podUtilisationInfo{}, } - clusterContext.AddPodEventHandler(cache.ResourceEventHandlerFuncs{ + _, err := clusterContext.AddPodEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { pod, ok := obj.(*v1.Pod) if !ok { @@ -70,7 +70,10 @@ func NewUtilisationEventReporter( go r.deletePod(pod) }, }) - return r + if err != nil { + return nil, err + } + return r, nil } func (r *UtilisationEventReporter) ReportUtilisationEvents() { diff --git a/internal/executor/utilisation/job_utilisation_reporter_test.go b/internal/executor/utilisation/job_utilisation_reporter_test.go index 2e96ad63dfe..d41d4b31789 100644 --- a/internal/executor/utilisation/job_utilisation_reporter_test.go +++ b/internal/executor/utilisation/job_utilisation_reporter_test.go @@ -37,8 +37,9 @@ func TestUtilisationEventReporter_ReportUtilisationEvents(t *testing.T) { fakeEventReporter := &mocks.FakeEventReporter{} fakeUtilisationService := &fakePodUtilisationService{data: &testPodResources} - eventReporter := NewUtilisationEventReporter(clusterContext, fakeUtilisationService, fakeEventReporter, reportingPeriod) - _, err := submitPod(clusterContext) + eventReporter, err := NewUtilisationEventReporter(clusterContext, fakeUtilisationService, fakeEventReporter, reportingPeriod) + require.NoError(t, err) + _, err = submitPod(clusterContext) require.NoError(t, err) deadline := time.Now().Add(time.Second) @@ -76,8 +77,9 @@ func TestUtilisationEventReporter_ReportUtilisationEvents_WhenNoUtilisationData( fakeEventReporter := &mocks.FakeEventReporter{} fakeUtilisationService := &fakePodUtilisationService{data: domain.EmptyUtilisationData()} - eventReporter := NewUtilisationEventReporter(clusterContext, fakeUtilisationService, fakeEventReporter, reportingPeriod) - _, err := submitPod(clusterContext) + eventReporter, err := NewUtilisationEventReporter(clusterContext, fakeUtilisationService, fakeEventReporter, reportingPeriod) + require.NoError(t, err) + _, err = submitPod(clusterContext) require.NoError(t, err) deadline := time.Now().Add(time.Millisecond * 500) diff --git a/internal/executor/utilisation/pod_utilisation_custom_metrics.go b/internal/executor/utilisation/pod_utilisation_custom_metrics.go index 8af57400b74..dffaf5c25c5 100644 --- a/internal/executor/utilisation/pod_utilisation_custom_metrics.go +++ b/internal/executor/utilisation/pod_utilisation_custom_metrics.go @@ -8,7 +8,7 @@ import ( log "github.com/sirupsen/logrus" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/executor/configuration" clusterContext "github.com/armadaproject/armada/internal/executor/context" diff --git a/internal/lookoutv2/pruner/pruner.go b/internal/lookoutv2/pruner/pruner.go index 3ac39aa5340..6ece3dd3962 100644 --- a/internal/lookoutv2/pruner/pruner.go +++ b/internal/lookoutv2/pruner/pruner.go @@ -7,7 +7,7 @@ import ( "github.com/jackc/pgx/v5" "github.com/pkg/errors" log "github.com/sirupsen/logrus" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/common/armadacontext" ) diff --git a/internal/lookoutv2/pruner/pruner_test.go b/internal/lookoutv2/pruner/pruner_test.go index 944a41db75d..2e86dd7d88d 100644 --- a/internal/lookoutv2/pruner/pruner_test.go +++ b/internal/lookoutv2/pruner/pruner_test.go @@ -8,7 +8,7 @@ import ( "github.com/google/uuid" "github.com/jackc/pgx/v5/pgxpool" "github.com/stretchr/testify/assert" - "k8s.io/apimachinery/pkg/util/clock" + clock "k8s.io/utils/clock/testing" "github.com/armadaproject/armada/internal/common/armadacontext" "github.com/armadaproject/armada/internal/common/compress" diff --git a/internal/lookoutv2/repository/getjobs.go b/internal/lookoutv2/repository/getjobs.go index 6930234a346..42854ee4f52 100644 --- a/internal/lookoutv2/repository/getjobs.go +++ b/internal/lookoutv2/repository/getjobs.go @@ -5,10 +5,9 @@ import ( "encoding/json" "time" - "k8s.io/apimachinery/pkg/util/clock" - "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgxpool" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/common/armadacontext" "github.com/armadaproject/armada/internal/common/database" diff --git a/internal/lookoutv2/repository/getjobs_test.go b/internal/lookoutv2/repository/getjobs_test.go index 409c994d860..620340850a0 100644 --- a/internal/lookoutv2/repository/getjobs_test.go +++ b/internal/lookoutv2/repository/getjobs_test.go @@ -5,7 +5,7 @@ import ( "testing" "time" - "k8s.io/apimachinery/pkg/util/clock" + clock "k8s.io/utils/clock/testing" "github.com/google/uuid" "github.com/jackc/pgx/v5/pgxpool" diff --git a/internal/lookoutv2/repository/util.go b/internal/lookoutv2/repository/util.go index c5e2069af68..9ca90d6271f 100644 --- a/internal/lookoutv2/repository/util.go +++ b/internal/lookoutv2/repository/util.go @@ -5,13 +5,12 @@ import ( "strings" "time" - "k8s.io/apimachinery/pkg/util/clock" - "github.com/apache/pulsar-client-go/pulsar" "github.com/google/uuid" log "github.com/sirupsen/logrus" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/utils/clock" "k8s.io/utils/pointer" "github.com/armadaproject/armada/internal/common/armadacontext" @@ -578,7 +577,7 @@ func (js *JobSimulator) RunUnschedulable(runId string, cluster string, node stri return js } -func (js *JobSimulator) LeaseExpired(runId string, timestamp time.Time, clk clock.Clock) *JobSimulator { +func (js *JobSimulator) LeaseExpired(runId string, timestamp time.Time, _ clock.Clock) *JobSimulator { ts := timestampOrNow(timestamp) leaseReturned := &armadaevents.EventSequence_Event{ Created: &ts, diff --git a/internal/scheduler/api.go b/internal/scheduler/api.go index 4c512e3ab1c..01259561597 100644 --- a/internal/scheduler/api.go +++ b/internal/scheduler/api.go @@ -12,7 +12,7 @@ import ( "github.com/pkg/errors" log "github.com/sirupsen/logrus" v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/common/armadacontext" "github.com/armadaproject/armada/internal/common/compress" diff --git a/internal/scheduler/api_test.go b/internal/scheduler/api_test.go index 71879388403..343c1896591 100644 --- a/internal/scheduler/api_test.go +++ b/internal/scheduler/api_test.go @@ -12,7 +12,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/util/clock" + clock "k8s.io/utils/clock/testing" "github.com/armadaproject/armada/internal/common/armadacontext" "github.com/armadaproject/armada/internal/common/compress" diff --git a/internal/scheduler/database/db_pruner.go b/internal/scheduler/database/db_pruner.go index 8da7dd7935d..b6b8ae2501f 100644 --- a/internal/scheduler/database/db_pruner.go +++ b/internal/scheduler/database/db_pruner.go @@ -5,7 +5,7 @@ import ( "github.com/jackc/pgx/v5" "github.com/pkg/errors" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/common/armadacontext" ) diff --git a/internal/scheduler/database/db_pruner_test.go b/internal/scheduler/database/db_pruner_test.go index c22196dbff8..7c19347d109 100644 --- a/internal/scheduler/database/db_pruner_test.go +++ b/internal/scheduler/database/db_pruner_test.go @@ -9,7 +9,7 @@ import ( "github.com/jackc/pgx/v5/pgxpool" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "k8s.io/apimachinery/pkg/util/clock" + clock "k8s.io/utils/clock/testing" "github.com/armadaproject/armada/internal/common/armadacontext" "github.com/armadaproject/armada/internal/common/database" diff --git a/internal/scheduler/jobdb/jobdb.go b/internal/scheduler/jobdb/jobdb.go index c25fee5917a..8b5e0bd8d2c 100644 --- a/internal/scheduler/jobdb/jobdb.go +++ b/internal/scheduler/jobdb/jobdb.go @@ -9,7 +9,7 @@ import ( "github.com/hashicorp/go-multierror" "github.com/pkg/errors" "golang.org/x/exp/maps" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/common/stringinterner" "github.com/armadaproject/armada/internal/common/types" diff --git a/internal/scheduler/metrics.go b/internal/scheduler/metrics.go index 6840f961012..a5eeeddc9a1 100644 --- a/internal/scheduler/metrics.go +++ b/internal/scheduler/metrics.go @@ -7,7 +7,7 @@ import ( "github.com/google/uuid" "github.com/prometheus/client_golang/prometheus" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/common/armadacontext" "github.com/armadaproject/armada/internal/common/logging" @@ -55,7 +55,7 @@ type MetricsCollector struct { executorRepository database.ExecutorRepository poolAssigner PoolAssigner refreshPeriod time.Duration - clock clock.Clock + clock clock.WithTicker state atomic.Value } diff --git a/internal/scheduler/metrics_test.go b/internal/scheduler/metrics_test.go index ede2f9b5215..53ad50e9c68 100644 --- a/internal/scheduler/metrics_test.go +++ b/internal/scheduler/metrics_test.go @@ -9,7 +9,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "k8s.io/apimachinery/pkg/api/resource" - "k8s.io/apimachinery/pkg/util/clock" + clock "k8s.io/utils/clock/testing" "github.com/armadaproject/armada/internal/common/armadacontext" commonmetrics "github.com/armadaproject/armada/internal/common/metrics" diff --git a/internal/scheduler/scheduler.go b/internal/scheduler/scheduler.go index 2bd3554506b..899bf398d0e 100644 --- a/internal/scheduler/scheduler.go +++ b/internal/scheduler/scheduler.go @@ -9,7 +9,7 @@ import ( "github.com/pkg/errors" "github.com/renstrom/shortuuid" v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/armada/configuration" "github.com/armadaproject/armada/internal/common/armadacontext" @@ -63,7 +63,7 @@ type Scheduler struct { previousSchedulingRoundEnd time.Time // Used for timing decisions (e.g., sleep). // Injected here so that we can mock it out for testing. - clock clock.Clock + clock clock.WithTicker // Stores active jobs (i.e. queued or running). jobDb *jobdb.JobDb // Highest offset we've read from Postgres on the jobs table. diff --git a/internal/scheduler/scheduler_test.go b/internal/scheduler/scheduler_test.go index 3a9cee6e5ef..566b74b4b4c 100644 --- a/internal/scheduler/scheduler_test.go +++ b/internal/scheduler/scheduler_test.go @@ -13,7 +13,7 @@ import ( "github.com/stretchr/testify/require" "golang.org/x/exp/slices" v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/util/clock" + clock "k8s.io/utils/clock/testing" apiconfig "github.com/armadaproject/armada/internal/armada/configuration" "github.com/armadaproject/armada/internal/common/armadacontext" diff --git a/internal/scheduler/scheduling_algo.go b/internal/scheduler/scheduling_algo.go index cbbc436a0ab..a6e9ca4ab35 100644 --- a/internal/scheduler/scheduling_algo.go +++ b/internal/scheduler/scheduling_algo.go @@ -13,7 +13,7 @@ import ( "github.com/sirupsen/logrus" "golang.org/x/exp/maps" "golang.org/x/time/rate" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/common/armadacontext" "github.com/armadaproject/armada/internal/common/logging" diff --git a/internal/scheduler/scheduling_algo_test.go b/internal/scheduler/scheduling_algo_test.go index 11a43da814d..f504e5d9b78 100644 --- a/internal/scheduler/scheduling_algo_test.go +++ b/internal/scheduler/scheduling_algo_test.go @@ -10,7 +10,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "golang.org/x/exp/slices" - "k8s.io/apimachinery/pkg/util/clock" + clock "k8s.io/utils/clock/testing" "github.com/armadaproject/armada/internal/common/armadacontext" armadaslices "github.com/armadaproject/armada/internal/common/slices" diff --git a/internal/scheduler/submitcheck.go b/internal/scheduler/submitcheck.go index 33486e91296..ae1e6583f14 100644 --- a/internal/scheduler/submitcheck.go +++ b/internal/scheduler/submitcheck.go @@ -8,7 +8,7 @@ import ( lru "github.com/hashicorp/golang-lru" "golang.org/x/exp/maps" - "k8s.io/apimachinery/pkg/util/clock" + "k8s.io/utils/clock" "github.com/armadaproject/armada/internal/common/armadacontext" "github.com/armadaproject/armada/internal/common/logging" diff --git a/internal/scheduler/submitcheck_test.go b/internal/scheduler/submitcheck_test.go index 851981394e4..565a4562629 100644 --- a/internal/scheduler/submitcheck_test.go +++ b/internal/scheduler/submitcheck_test.go @@ -10,7 +10,7 @@ import ( "github.com/stretchr/testify/require" "golang.org/x/exp/slices" "k8s.io/apimachinery/pkg/api/resource" - "k8s.io/apimachinery/pkg/util/clock" + clock "k8s.io/utils/clock/testing" "github.com/armadaproject/armada/internal/common/armadacontext" "github.com/armadaproject/armada/internal/scheduler/configuration" diff --git a/magefiles/kind.go b/magefiles/kind.go index 8c194896720..362b834c64a 100644 --- a/magefiles/kind.go +++ b/magefiles/kind.go @@ -15,7 +15,7 @@ import ( ) const ( - KIND_VERSION_CONSTRAINT = ">= 0.14.0" + KIND_VERSION_CONSTRAINT = ">= 0.21.0" KIND_CONFIG_INTERNAL = ".kube/internal/config" KIND_CONFIG_EXTERNAL = ".kube/external/config" KIND_NAME = "armada-test" @@ -23,8 +23,8 @@ const ( func getImagesUsedInTestsOrControllers() []string { return []string{ - "nginx:1.21.6", // Used by ingress-controller - "alpine:3.18.3", + "nginx:1.27.0", // Used by ingress-controller + "alpine:3.20.0", "bitnami/kubectl:1.30", } } diff --git a/pkg/api/api.swagger.go b/pkg/api/api.swagger.go index bb440673ae4..cc647a2d726 100644 --- a/pkg/api/api.swagger.go +++ b/pkg/api/api.swagger.go @@ -2067,7 +2067,7 @@ func SwaggerJsonTemplate() string { " }\n" + " },\n" + " \"resourceQuantity\": {\n" + - " \"description\": \"The serialization format is:\\n\\n\\u003cquantity\\u003e ::= \\u003csignedNumber\\u003e\\u003csuffix\\u003e\\n(Note that \\u003csuffix\\u003e may be empty, from the \\\"\\\" case in \\u003cdecimalSI\\u003e.)\\n\\u003cdigit\\u003e ::= 0 | 1 | ... | 9\\n\\u003cdigits\\u003e ::= \\u003cdigit\\u003e | \\u003cdigit\\u003e\\u003cdigits\\u003e\\n\\u003cnumber\\u003e ::= \\u003cdigits\\u003e | \\u003cdigits\\u003e.\\u003cdigits\\u003e | \\u003cdigits\\u003e. | .\\u003cdigits\\u003e\\n\\u003csign\\u003e ::= \\\"+\\\" | \\\"-\\\"\\n\\u003csignedNumber\\u003e ::= \\u003cnumber\\u003e | \\u003csign\\u003e\\u003cnumber\\u003e\\n\\u003csuffix\\u003e ::= \\u003cbinarySI\\u003e | \\u003cdecimalExponent\\u003e | \\u003cdecimalSI\\u003e\\n\\u003cbinarySI\\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\\n(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\\n\\u003cdecimalSI\\u003e ::= m | \\\"\\\" | k | M | G | T | P | E\\n(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\\n\\u003cdecimalExponent\\u003e ::= \\\"e\\\" \\u003csignedNumber\\u003e | \\\"E\\\" \\u003csignedNumber\\u003e\\n\\nNo matter which of the three exponent forms is used, no quantity may represent\\na number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal\\nplaces. Numbers larger or more precise will be capped or rounded up.\\n(E.g.: 0.1m will rounded up to 1m.)\\nThis may be extended in the future if we require larger or smaller quantities.\\n\\nWhen a Quantity is parsed from a string, it will remember the type of suffix\\nit had, and will use the same type again when it is serialized.\\n\\nBefore serializing, Quantity will be put in \\\"canonical form\\\".\\nThis means that Exponent/suffix will be adjusted up or down (with a\\ncorresponding increase or decrease in Mantissa) such that:\\na. No precision is lost\\nb. No fractional digits will be emitted\\nc. The exponent (or suffix) is as large as possible.\\nThe sign will be omitted unless the number is negative.\\n\\nExamples:\\n1.5 will be serialized as \\\"1500m\\\"\\n1.5Gi will be serialized as \\\"1536Mi\\\"\\n\\nNote that the quantity will NEVER be internally represented by a\\nfloating point number. That is the whole point of this exercise.\\n\\nNon-canonical values will still parse as long as they are well formed,\\nbut will be re-emitted in their canonical form. (So always use canonical\\nform, or don't diff.)\\n\\nThis format is intended to make it difficult to use these numbers without\\nwriting some sort of special handling code in the hopes that that will\\ncause implementors to also use a fixed point implementation.\\n\\n+protobuf=true\\n+protobuf.embed=string\\n+protobuf.options.marshal=false\\n+protobuf.options.(gogoproto.goproto_stringer)=false\\n+k8s:deepcopy-gen=true\\n+k8s:openapi-gen=true\",\n" + + " \"description\": \"The serialization format is:\\n\\n```\\n\\u003cquantity\\u003e ::= \\u003csignedNumber\\u003e\\u003csuffix\\u003e\\n\\n(Note that \\u003csuffix\\u003e may be empty, from the \\\"\\\" case in \\u003cdecimalSI\\u003e.)\\n\\n\\u003cdigit\\u003e ::= 0 | 1 | ... | 9\\n\\u003cdigits\\u003e ::= \\u003cdigit\\u003e | \\u003cdigit\\u003e\\u003cdigits\\u003e\\n\\u003cnumber\\u003e ::= \\u003cdigits\\u003e | \\u003cdigits\\u003e.\\u003cdigits\\u003e | \\u003cdigits\\u003e. | .\\u003cdigits\\u003e\\n\\u003csign\\u003e ::= \\\"+\\\" | \\\"-\\\"\\n\\u003csignedNumber\\u003e ::= \\u003cnumber\\u003e | \\u003csign\\u003e\\u003cnumber\\u003e\\n\\u003csuffix\\u003e ::= \\u003cbinarySI\\u003e | \\u003cdecimalExponent\\u003e | \\u003cdecimalSI\\u003e\\n\\u003cbinarySI\\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\\n\\n(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\\n\\n\\u003cdecimalSI\\u003e ::= m | \\\"\\\" | k | M | G | T | P | E\\n\\n(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\\n\\n\\u003cdecimalExponent\\u003e ::= \\\"e\\\" \\u003csignedNumber\\u003e | \\\"E\\\" \\u003csignedNumber\\u003e\\n```\\n\\nNo matter which of the three exponent forms is used, no quantity may represent\\na number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal\\nplaces. Numbers larger or more precise will be capped or rounded up.\\n(E.g.: 0.1m will rounded up to 1m.)\\nThis may be extended in the future if we require larger or smaller quantities.\\n\\nWhen a Quantity is parsed from a string, it will remember the type of suffix\\nit had, and will use the same type again when it is serialized.\\n\\nBefore serializing, Quantity will be put in \\\"canonical form\\\".\\nThis means that Exponent/suffix will be adjusted up or down (with a\\ncorresponding increase or decrease in Mantissa) such that:\\n\\nNo precision is lost\\nNo fractional digits will be emitted\\nThe exponent (or suffix) is as large as possible.\\n\\nThe sign will be omitted unless the number is negative.\\n\\nExamples:\\n\\n1.5 will be serialized as \\\"1500m\\\"\\n1.5Gi will be serialized as \\\"1536Mi\\\"\\n\\nNote that the quantity will NEVER be internally represented by a\\nfloating point number. That is the whole point of this exercise.\\n\\nNon-canonical values will still parse as long as they are well formed,\\nbut will be re-emitted in their canonical form. (So always use canonical\\nform, or don't diff.)\\n\\nThis format is intended to make it difficult to use these numbers without\\nwriting some sort of special handling code in the hopes that that will\\ncause implementors to also use a fixed point implementation.\\n\\n+protobuf=true\\n+protobuf.embed=string\\n+protobuf.options.marshal=false\\n+protobuf.options.(gogoproto.goproto_stringer)=false\\n+k8s:deepcopy-gen=true\\n+k8s:openapi-gen=true\",\n" + " \"type\": \"string\",\n" + " \"title\": \"Quantity is a fixed-point representation of a number.\\nIt provides convenient marshaling/unmarshaling in JSON and YAML,\\nin addition to String() and AsInt64() accessors.\",\n" + " \"x-go-package\": \"k8s.io/apimachinery/pkg/api/resource\"\n" + @@ -2129,23 +2129,23 @@ func SwaggerJsonTemplate() string { " \"title\": \"Represents a Persistent Disk resource in AWS.\",\n" + " \"properties\": {\n" + " \"fsType\": {\n" + - " \"description\": \"Filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\\n+optional\",\n" + + " \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\nTODO: how do we prevent errors in the filesystem from compromising the machine\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"FSType\"\n" + " },\n" + " \"partition\": {\n" + - " \"description\": \"The partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\n+optional\",\n" + + " \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\n+optional\",\n" + " \"type\": \"integer\",\n" + " \"format\": \"int32\",\n" + " \"x-go-name\": \"Partition\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"Specify \\\"true\\\" to force and set the ReadOnly property in VolumeMounts to \\\"true\\\".\\nIf omitted, the default is \\\"false\\\".\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\n+optional\",\n" + + " \"description\": \"readOnly value true will force the readOnly setting in VolumeMounts.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " },\n" + " \"volumeID\": {\n" + - " \"description\": \"Unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n" + + " \"description\": \"volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"VolumeID\"\n" + " }\n" + @@ -2169,10 +2169,12 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1AzureDataDiskCachingMode\": {\n" + + " \"description\": \"+enum\",\n" + " \"type\": \"string\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1AzureDataDiskKind\": {\n" + + " \"description\": \"+enum\",\n" + " \"type\": \"string\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + @@ -2184,17 +2186,17 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1AzureDataDiskCachingMode\"\n" + " },\n" + " \"diskName\": {\n" + - " \"description\": \"The Name of the data disk in the blob storage\",\n" + + " \"description\": \"diskName is the Name of the data disk in the blob storage\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"DiskName\"\n" + " },\n" + " \"diskURI\": {\n" + - " \"description\": \"The URI the data disk in the blob storage\",\n" + + " \"description\": \"diskURI is the URI of data disk in the blob storage\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"DataDiskURI\"\n" + " },\n" + " \"fsType\": {\n" + - " \"description\": \"Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\n+optional\",\n" + + " \"description\": \"fsType is Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"FSType\"\n" + " },\n" + @@ -2202,7 +2204,7 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1AzureDataDiskKind\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\n+optional\",\n" + + " \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " }\n" + @@ -2214,17 +2216,17 @@ func SwaggerJsonTemplate() string { " \"title\": \"AzureFile represents an Azure File Service mount on the host and bind mount to the pod.\",\n" + " \"properties\": {\n" + " \"readOnly\": {\n" + - " \"description\": \"Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\n+optional\",\n" + + " \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " },\n" + " \"secretName\": {\n" + - " \"description\": \"the name of secret that contains Azure Storage Account Name and Key\",\n" + + " \"description\": \"secretName is the name of secret that contains Azure Storage Account Name and Key\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"SecretName\"\n" + " },\n" + " \"shareName\": {\n" + - " \"description\": \"Share Name\",\n" + + " \"description\": \"shareName is the azure share Name\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"ShareName\"\n" + " }\n" + @@ -2236,12 +2238,12 @@ func SwaggerJsonTemplate() string { " \"type\": \"object\",\n" + " \"properties\": {\n" + " \"driver\": {\n" + - " \"description\": \"Driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n" + + " \"description\": \"driver is the name of the CSI driver that handles this volume.\\nConsult with your admin for the correct name as registered in the cluster.\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Driver\"\n" + " },\n" + " \"fsType\": {\n" + - " \"description\": \"Filesystem type to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\\n+optional\",\n" + + " \"description\": \"fsType to mount. Ex. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nIf not provided, the empty value is passed to the associated CSI driver\\nwhich will determine the default filesystem to apply.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"FSType\"\n" + " },\n" + @@ -2249,12 +2251,12 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1LocalObjectReference\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"Specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\\n+optional\",\n" + + " \"description\": \"readOnly specifies a read-only configuration for the volume.\\nDefaults to false (read/write).\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " },\n" + " \"volumeAttributes\": {\n" + - " \"description\": \"VolumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\\n+optional\",\n" + + " \"description\": \"volumeAttributes stores driver-specific properties that are passed to the CSI\\ndriver. Consult your driver's documentation for supported values.\\n+optional\",\n" + " \"type\": \"object\",\n" + " \"additionalProperties\": {\n" + " \"type\": \"string\"\n" + @@ -2297,7 +2299,7 @@ func SwaggerJsonTemplate() string { " \"type\": \"object\",\n" + " \"properties\": {\n" + " \"monitors\": {\n" + - " \"description\": \"Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n" + + " \"description\": \"monitors is Required: Monitors is a collection of Ceph monitors\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"type\": \"string\"\n" + @@ -2305,17 +2307,17 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"Monitors\"\n" + " },\n" + " \"path\": {\n" + - " \"description\": \"Optional: Used as the mounted root, rather than the full Ceph tree, default is /\\n+optional\",\n" + + " \"description\": \"path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Path\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\\n+optional\",\n" + + " \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " },\n" + " \"secretFile\": {\n" + - " \"description\": \"Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\\n+optional\",\n" + + " \"description\": \"secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"SecretFile\"\n" + " },\n" + @@ -2323,7 +2325,7 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1LocalObjectReference\"\n" + " },\n" + " \"user\": {\n" + - " \"description\": \"Optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\\n+optional\",\n" + + " \"description\": \"user is optional: User is the rados user name, default is admin\\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"User\"\n" + " }\n" + @@ -2336,12 +2338,12 @@ func SwaggerJsonTemplate() string { " \"title\": \"Represents a cinder volume resource in Openstack.\",\n" + " \"properties\": {\n" + " \"fsType\": {\n" + - " \"description\": \"Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\\n+optional\",\n" + + " \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"FSType\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\\n+optional\",\n" + + " \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " },\n" + @@ -2349,13 +2351,31 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1LocalObjectReference\"\n" + " },\n" + " \"volumeID\": {\n" + - " \"description\": \"volume id used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n" + + " \"description\": \"volumeID used to identify the volume in cinder.\\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"VolumeID\"\n" + " }\n" + " },\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + + " \"v1ClaimSource\": {\n" + + " \"description\": \"Exactly one of these fields should be set. Consumers of this type must\\ntreat an empty object as if it has an unknown value.\",\n" + + " \"type\": \"object\",\n" + + " \"title\": \"ClaimSource describes a reference to a ResourceClaim.\",\n" + + " \"properties\": {\n" + + " \"resourceClaimName\": {\n" + + " \"description\": \"ResourceClaimName is the name of a ResourceClaim object in the same\\nnamespace as this pod.\",\n" + + " \"type\": \"string\",\n" + + " \"x-go-name\": \"ResourceClaimName\"\n" + + " },\n" + + " \"resourceClaimTemplateName\": {\n" + + " \"description\": \"ResourceClaimTemplateName is the name of a ResourceClaimTemplate\\nobject in the same namespace as this pod.\\n\\nThe template will be used to create a new ResourceClaim, which will\\nbe bound to this pod. When this pod is deleted, the ResourceClaim\\nwill also be deleted. The name of the ResourceClaim will be \\u003cpod\\nname\\u003e-\\u003cresource name\\u003e, where \\u003cresource name\\u003e is the\\nPodResourceClaim.Name. Pod validation will reject the pod if the\\nconcatenated name is not valid for a ResourceClaim (e.g. too long).\\n\\nAn existing ResourceClaim with that name that is not owned by the\\npod will not be used for the pod to avoid using an unrelated\\nresource by mistake. Scheduling and pod startup are then blocked\\nuntil the unrelated ResourceClaim is removed.\\n\\nThis field is immutable and no changes will be made to the\\ncorresponding ResourceClaim by the control plane after creating the\\nResourceClaim.\",\n" + + " \"type\": \"string\",\n" + + " \"x-go-name\": \"ResourceClaimTemplateName\"\n" + + " }\n" + + " },\n" + + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + + " },\n" + " \"v1ClientIPConfig\": {\n" + " \"description\": \"ClientIPConfig represents the configurations of Client IP based session affinity.\",\n" + " \"type\": \"object\",\n" + @@ -2368,9 +2388,9 @@ func SwaggerJsonTemplate() string { " }\n" + " },\n" + " \"v1Condition\": {\n" + - " \"description\": \"// other fields\\n}\",\n" + + " \"description\": \"type FooStatus struct{\\n\\t // Represents the observations of a foo's current state.\\n\\t // Known .status.conditions.type are: \\\"Available\\\", \\\"Progressing\\\", and \\\"Degraded\\\"\\n\\t // +patchMergeKey=type\\n\\t // +patchStrategy=merge\\n\\t // +listType=map\\n\\t // +listMapKey=type\\n\\t Conditions []metav1.Condition `json:\\\"conditions,omitempty\\\" patchStrategy:\\\"merge\\\" patchMergeKey:\\\"type\\\" protobuf:\\\"bytes,1,rep,name=conditions\\\"`\\n\\n\\t // other fields\\n\\t}\",\n" + " \"type\": \"object\",\n" + - " \"title\": \"Condition contains details for one aspect of the current state of this API Resource.\\n---\\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\\ntype FooStatus struct{\\n // Represents the observations of a foo's current state.\\n // Known .status.conditions.type are: \\\"Available\\\", \\\"Progressing\\\", and \\\"Degraded\\\"\\n // +patchMergeKey=type\\n // +patchStrategy=merge\\n // +listType=map\\n // +listMapKey=type\\n Conditions []metav1.Condition `json:\\\"conditions,omitempty\\\" patchStrategy:\\\"merge\\\" patchMergeKey:\\\"type\\\" protobuf:\\\"bytes,1,rep,name=conditions\\\"`\",\n" + + " \"title\": \"Condition contains details for one aspect of the current state of this API Resource.\\n---\\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\",\n" + " \"properties\": {\n" + " \"lastTransitionTime\": {\n" + " \"title\": \"lastTransitionTime is the last time the condition transitioned from one status to another.\\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.\\n+required\\n+kubebuilder:validation:Required\\n+kubebuilder:validation:Type=string\\n+kubebuilder:validation:Format=date-time\",\n" + @@ -2446,7 +2466,7 @@ func SwaggerJsonTemplate() string { " \"title\": \"Adapts a ConfigMap into a projected volume.\",\n" + " \"properties\": {\n" + " \"items\": {\n" + - " \"description\": \"If unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\\n+optional\",\n" + + " \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"$ref\": \"#/definitions/v1KeyToPath\"\n" + @@ -2459,7 +2479,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"Name\"\n" + " },\n" + " \"optional\": {\n" + - " \"description\": \"Specify whether the ConfigMap or its keys must be defined\\n+optional\",\n" + + " \"description\": \"optional specify whether the ConfigMap or its keys must be defined\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"Optional\"\n" + " }\n" + @@ -2472,13 +2492,13 @@ func SwaggerJsonTemplate() string { " \"title\": \"Adapts a ConfigMap into a volume.\",\n" + " \"properties\": {\n" + " \"defaultMode\": {\n" + - " \"description\": \"Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\\n+optional\",\n" + + " \"description\": \"defaultMode is optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDefaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\\n+optional\",\n" + " \"type\": \"integer\",\n" + " \"format\": \"int32\",\n" + " \"x-go-name\": \"DefaultMode\"\n" + " },\n" + " \"items\": {\n" + - " \"description\": \"If unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\\n+optional\",\n" + + " \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nConfigMap will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the ConfigMap,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"$ref\": \"#/definitions/v1KeyToPath\"\n" + @@ -2491,7 +2511,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"Name\"\n" + " },\n" + " \"optional\": {\n" + - " \"description\": \"Specify whether the ConfigMap or its keys must be defined\\n+optional\",\n" + + " \"description\": \"optional specify whether the ConfigMap or its keys must be defined\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"Optional\"\n" + " }\n" + @@ -2503,7 +2523,7 @@ func SwaggerJsonTemplate() string { " \"title\": \"A single application container that you want to run within a pod.\",\n" + " \"properties\": {\n" + " \"args\": {\n" + - " \"description\": \"Arguments to the entrypoint.\\nThe docker image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\\n+optional\",\n" + + " \"description\": \"Arguments to the entrypoint.\\nThe container image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"type\": \"string\"\n" + @@ -2511,7 +2531,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"Args\"\n" + " },\n" + " \"command\": {\n" + - " \"description\": \"Entrypoint array. Not executed within a shell.\\nThe docker image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\\n+optional\",\n" + + " \"description\": \"Entrypoint array. Not executed within a shell.\\nThe container image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"type\": \"string\"\n" + @@ -2535,7 +2555,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"EnvFrom\"\n" + " },\n" + " \"image\": {\n" + - " \"description\": \"Docker image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\\n+optional\",\n" + + " \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\\nThis field is optional to allow higher level config management to default or override\\ncontainer images in workload controllers like Deployments and StatefulSets.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Image\"\n" + " },\n" + @@ -2554,7 +2574,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"Name\"\n" + " },\n" + " \"ports\": {\n" + - " \"description\": \"List of ports to expose from the container. Exposing a port here gives\\nthe system additional information about the network connections a\\ncontainer uses, but is primarily informational. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nCannot be updated.\\n+optional\\n+patchMergeKey=containerPort\\n+patchStrategy=merge\\n+listType=map\\n+listMapKey=containerPort\\n+listMapKey=protocol\",\n" + + " \"description\": \"List of ports to expose from the container. Not specifying a port here\\nDOES NOT prevent that port from being exposed. Any port which is\\nlistening on the default \\\"0.0.0.0\\\" address inside a container will be\\naccessible from the network.\\nModifying this array with strategic merge patch may corrupt the data.\\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\\nCannot be updated.\\n+optional\\n+patchMergeKey=containerPort\\n+patchStrategy=merge\\n+listType=map\\n+listMapKey=containerPort\\n+listMapKey=protocol\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"$ref\": \"#/definitions/v1ContainerPort\"\n" + @@ -2653,6 +2673,7 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1DNSPolicy\": {\n" + + " \"description\": \"+enum\",\n" + " \"type\": \"string\",\n" + " \"title\": \"DNSPolicy defines how a pod's DNS will be configured.\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + @@ -2791,11 +2812,12 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1EphemeralContainer\": {\n" + - " \"description\": \"An EphemeralContainer is a container that may be added temporarily to an existing pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a pod is\\nremoved or restarted. If an ephemeral container causes a pod to exceed its resource\\nallocation, the pod may be evicted.\\nEphemeral containers may not be added by directly updating the pod spec. They must be added\\nvia the pod's ephemeralcontainers subresource, and they will appear in the pod spec\\nonce added.\\nThis is an alpha feature enabled by the EphemeralContainers feature flag.\",\n" + + " \"description\": \"To add an ephemeral container, use the ephemeralcontainers subresource of an existing\\nPod. Ephemeral containers may not be removed or restarted.\",\n" + " \"type\": \"object\",\n" + + " \"title\": \"An EphemeralContainer is a temporary container that you may add to an existing Pod for\\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\\nPod to exceed its resource allocation.\",\n" + " \"properties\": {\n" + " \"args\": {\n" + - " \"description\": \"Arguments to the entrypoint.\\nThe docker image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\\n+optional\",\n" + + " \"description\": \"Arguments to the entrypoint.\\nThe image's CMD is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"type\": \"string\"\n" + @@ -2803,7 +2825,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"Args\"\n" + " },\n" + " \"command\": {\n" + - " \"description\": \"Entrypoint array. Not executed within a shell.\\nThe docker image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\\n+optional\",\n" + + " \"description\": \"Entrypoint array. Not executed within a shell.\\nThe image's ENTRYPOINT is used if this is not provided.\\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \\\"$$(VAR_NAME)\\\" will\\nproduce the string literal \\\"$(VAR_NAME)\\\". Escaped references will never be expanded, regardless\\nof whether the variable exists or not. Cannot be updated.\\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"type\": \"string\"\n" + @@ -2827,7 +2849,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"EnvFrom\"\n" + " },\n" + " \"image\": {\n" + - " \"description\": \"Docker image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n" + + " \"description\": \"Container image name.\\nMore info: https://kubernetes.io/docs/concepts/containers/images\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Image\"\n" + " },\n" + @@ -2846,7 +2868,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"Name\"\n" + " },\n" + " \"ports\": {\n" + - " \"description\": \"Ports are not allowed for ephemeral containers.\",\n" + + " \"description\": \"Ports are not allowed for ephemeral containers.\\n+optional\\n+patchMergeKey=containerPort\\n+patchStrategy=merge\\n+listType=map\\n+listMapKey=containerPort\\n+listMapKey=protocol\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"$ref\": \"#/definitions/v1ContainerPort\"\n" + @@ -2876,7 +2898,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"StdinOnce\"\n" + " },\n" + " \"targetContainerName\": {\n" + - " \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container is run in whatever namespaces are shared\\nfor the pod. Note that the container runtime must support this feature.\\n+optional\",\n" + + " \"description\": \"If set, the name of the container from PodSpec that this ephemeral container targets.\\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\\n\\nThe container runtime must implement support for this feature. If the runtime does not\\nsupport namespace targeting then the result of setting this field is undefined.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"TargetContainerName\"\n" + " },\n" + @@ -2902,7 +2924,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"VolumeDevices\"\n" + " },\n" + " \"volumeMounts\": {\n" + - " \"description\": \"Pod volumes to mount into the container's filesystem.\\nCannot be updated.\\n+optional\\n+patchMergeKey=mountPath\\n+patchStrategy=merge\",\n" + + " \"description\": \"Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\\nCannot be updated.\\n+optional\\n+patchMergeKey=mountPath\\n+patchStrategy=merge\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"$ref\": \"#/definitions/v1VolumeMount\"\n" + @@ -2948,23 +2970,23 @@ func SwaggerJsonTemplate() string { " \"title\": \"Represents a Fibre Channel volume.\",\n" + " \"properties\": {\n" + " \"fsType\": {\n" + - " \"description\": \"Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\\n+optional\",\n" + + " \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nTODO: how do we prevent errors in the filesystem from compromising the machine\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"FSType\"\n" + " },\n" + " \"lun\": {\n" + - " \"description\": \"Optional: FC target lun number\\n+optional\",\n" + + " \"description\": \"lun is Optional: FC target lun number\\n+optional\",\n" + " \"type\": \"integer\",\n" + " \"format\": \"int32\",\n" + " \"x-go-name\": \"Lun\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\n+optional\",\n" + + " \"description\": \"readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " },\n" + " \"targetWWNs\": {\n" + - " \"description\": \"Optional: FC target worldwide names (WWNs)\\n+optional\",\n" + + " \"description\": \"targetWWNs is Optional: FC target worldwide names (WWNs)\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"type\": \"string\"\n" + @@ -2972,7 +2994,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"TargetWWNs\"\n" + " },\n" + " \"wwids\": {\n" + - " \"description\": \"Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\\n+optional\",\n" + + " \"description\": \"wwids Optional: FC volume world wide identifiers (wwids)\\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"type\": \"string\"\n" + @@ -2993,17 +3015,17 @@ func SwaggerJsonTemplate() string { " \"type\": \"object\",\n" + " \"properties\": {\n" + " \"driver\": {\n" + - " \"description\": \"Driver is the name of the driver to use for this volume.\",\n" + + " \"description\": \"driver is the name of the driver to use for this volume.\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Driver\"\n" + " },\n" + " \"fsType\": {\n" + - " \"description\": \"Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\\n+optional\",\n" + + " \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". The default filesystem depends on FlexVolume script.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"FSType\"\n" + " },\n" + " \"options\": {\n" + - " \"description\": \"Optional: Extra command options if any.\\n+optional\",\n" + + " \"description\": \"options is Optional: this field holds extra command options if any.\\n+optional\",\n" + " \"type\": \"object\",\n" + " \"additionalProperties\": {\n" + " \"type\": \"string\"\n" + @@ -3011,7 +3033,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"Options\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"Optional: Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\n+optional\",\n" + + " \"description\": \"readOnly is Optional: defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " },\n" + @@ -3027,12 +3049,12 @@ func SwaggerJsonTemplate() string { " \"title\": \"Represents a Flocker volume mounted by the Flocker agent.\",\n" + " \"properties\": {\n" + " \"datasetName\": {\n" + - " \"description\": \"Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\\n+optional\",\n" + + " \"description\": \"datasetName is Name of the dataset stored as metadata -\\u003e name on the dataset for Flocker\\nshould be considered as deprecated\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"DatasetName\"\n" + " },\n" + " \"datasetUUID\": {\n" + - " \"description\": \"UUID of the dataset. This is unique identifier of a Flocker dataset\\n+optional\",\n" + + " \"description\": \"datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"DatasetUUID\"\n" + " }\n" + @@ -3045,46 +3067,63 @@ func SwaggerJsonTemplate() string { " \"title\": \"Represents a Persistent Disk resource in Google Compute Engine.\",\n" + " \"properties\": {\n" + " \"fsType\": {\n" + - " \"description\": \"Filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\\n+optional\",\n" + + " \"description\": \"fsType is filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\nTODO: how do we prevent errors in the filesystem from compromising the machine\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"FSType\"\n" + " },\n" + " \"partition\": {\n" + - " \"description\": \"The partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\n+optional\",\n" + + " \"description\": \"partition is the partition in the volume that you want to mount.\\nIf omitted, the default is to mount by volume name.\\nExamples: For volume /dev/sda1, you specify the partition as \\\"1\\\".\\nSimilarly, the volume partition for /dev/sda is \\\"0\\\" (or you can leave the property empty).\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\n+optional\",\n" + " \"type\": \"integer\",\n" + " \"format\": \"int32\",\n" + " \"x-go-name\": \"Partition\"\n" + " },\n" + " \"pdName\": {\n" + - " \"description\": \"Unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n" + + " \"description\": \"pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"PDName\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"ReadOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\n+optional\",\n" + + " \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " }\n" + " },\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + + " \"v1GRPCAction\": {\n" + + " \"type\": \"object\",\n" + + " \"properties\": {\n" + + " \"port\": {\n" + + " \"description\": \"Port number of the gRPC service. Number must be in the range 1 to 65535.\",\n" + + " \"type\": \"integer\",\n" + + " \"format\": \"int32\",\n" + + " \"x-go-name\": \"Port\"\n" + + " },\n" + + " \"service\": {\n" + + " \"description\": \"Service is the name of the service to place in the gRPC HealthCheckRequest\\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\\n\\nIf this is not specified, the default behavior is defined by gRPC.\\n+optional\\n+default=\\\"\\\"\",\n" + + " \"type\": \"string\",\n" + + " \"x-go-name\": \"Service\"\n" + + " }\n" + + " },\n" + + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + + " },\n" + " \"v1GitRepoVolumeSource\": {\n" + " \"description\": \"DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\\ninto the Pod's container.\",\n" + " \"type\": \"object\",\n" + " \"title\": \"Represents a volume that is populated with the contents of a git repository.\\nGit repo volumes do not support ownership management.\\nGit repo volumes support SELinux relabeling.\",\n" + " \"properties\": {\n" + " \"directory\": {\n" + - " \"description\": \"Target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\\n+optional\",\n" + + " \"description\": \"directory is the target directory name.\\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\\ngit repository. Otherwise, if specified, the volume will contain the git repository in\\nthe subdirectory with the given name.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Directory\"\n" + " },\n" + " \"repository\": {\n" + - " \"description\": \"Repository URL\",\n" + + " \"description\": \"repository is the URL\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Repository\"\n" + " },\n" + " \"revision\": {\n" + - " \"description\": \"Commit hash for the specified revision.\\n+optional\",\n" + + " \"description\": \"revision is the commit hash for the specified revision.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Revision\"\n" + " }\n" + @@ -3097,17 +3136,17 @@ func SwaggerJsonTemplate() string { " \"title\": \"Represents a Glusterfs mount that lasts the lifetime of a pod.\",\n" + " \"properties\": {\n" + " \"endpoints\": {\n" + - " \"description\": \"EndpointsName is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n" + + " \"description\": \"endpoints is the endpoint name that details Glusterfs topology.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"EndpointsName\"\n" + " },\n" + " \"path\": {\n" + - " \"description\": \"Path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n" + + " \"description\": \"path is the Glusterfs volume path.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Path\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\\n+optional\",\n" + + " \"description\": \"readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " }\n" + @@ -3150,7 +3189,7 @@ func SwaggerJsonTemplate() string { " \"type\": \"object\",\n" + " \"properties\": {\n" + " \"name\": {\n" + - " \"description\": \"The header field name\",\n" + + " \"description\": \"The header field name.\\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Name\"\n" + " },\n" + @@ -3193,22 +3232,6 @@ func SwaggerJsonTemplate() string { " }\n" + " }\n" + " },\n" + - " \"v1Handler\": {\n" + - " \"description\": \"Handler defines a specific action that should be taken\\nTODO: pass structured data to these actions, and document that data here.\",\n" + - " \"type\": \"object\",\n" + - " \"properties\": {\n" + - " \"exec\": {\n" + - " \"$ref\": \"#/definitions/v1ExecAction\"\n" + - " },\n" + - " \"httpGet\": {\n" + - " \"$ref\": \"#/definitions/v1HTTPGetAction\"\n" + - " },\n" + - " \"tcpSocket\": {\n" + - " \"$ref\": \"#/definitions/v1TCPSocketAction\"\n" + - " }\n" + - " },\n" + - " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + - " },\n" + " \"v1HostAlias\": {\n" + " \"description\": \"HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\\npod's hosts file.\",\n" + " \"type\": \"object\",\n" + @@ -3230,6 +3253,7 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1HostPathType\": {\n" + + " \"description\": \"+enum\",\n" + " \"type\": \"string\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + @@ -3239,7 +3263,7 @@ func SwaggerJsonTemplate() string { " \"title\": \"Represents a host path mapped into a pod.\",\n" + " \"properties\": {\n" + " \"path\": {\n" + - " \"description\": \"Path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n" + + " \"description\": \"path of the directory on the host.\\nIf the path is a symlink, it will follow the link to the real path.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Path\"\n" + " },\n" + @@ -3255,43 +3279,43 @@ func SwaggerJsonTemplate() string { " \"title\": \"Represents an ISCSI disk.\",\n" + " \"properties\": {\n" + " \"chapAuthDiscovery\": {\n" + - " \"description\": \"whether support iSCSI Discovery CHAP authentication\\n+optional\",\n" + + " \"description\": \"chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"DiscoveryCHAPAuth\"\n" + " },\n" + " \"chapAuthSession\": {\n" + - " \"description\": \"whether support iSCSI Session CHAP authentication\\n+optional\",\n" + + " \"description\": \"chapAuthSession defines whether support iSCSI Session CHAP authentication\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"SessionCHAPAuth\"\n" + " },\n" + " \"fsType\": {\n" + - " \"description\": \"Filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\\n+optional\",\n" + + " \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\\nTODO: how do we prevent errors in the filesystem from compromising the machine\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"FSType\"\n" + " },\n" + " \"initiatorName\": {\n" + - " \"description\": \"Custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\\n+optional\",\n" + + " \"description\": \"initiatorName is the custom iSCSI Initiator Name.\\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\\n\\u003ctarget portal\\u003e:\\u003cvolume name\\u003e will be created for the connection.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"InitiatorName\"\n" + " },\n" + " \"iqn\": {\n" + - " \"description\": \"Target iSCSI Qualified Name.\",\n" + + " \"description\": \"iqn is the target iSCSI Qualified Name.\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"IQN\"\n" + " },\n" + " \"iscsiInterface\": {\n" + - " \"description\": \"iSCSI Interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\\n+optional\",\n" + + " \"description\": \"iscsiInterface is the interface Name that uses an iSCSI transport.\\nDefaults to 'default' (tcp).\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"ISCSIInterface\"\n" + " },\n" + " \"lun\": {\n" + - " \"description\": \"iSCSI Target Lun number.\",\n" + + " \"description\": \"lun represents iSCSI Target Lun number.\",\n" + " \"type\": \"integer\",\n" + " \"format\": \"int32\",\n" + " \"x-go-name\": \"Lun\"\n" + " },\n" + " \"portals\": {\n" + - " \"description\": \"iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\\n+optional\",\n" + + " \"description\": \"portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"type\": \"string\"\n" + @@ -3299,7 +3323,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"Portals\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"ReadOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\n+optional\",\n" + + " \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " },\n" + @@ -3307,7 +3331,7 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1LocalObjectReference\"\n" + " },\n" + " \"targetPortal\": {\n" + - " \"description\": \"iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n" + + " \"description\": \"targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\\nis other than default (typically TCP ports 860 and 3260).\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"TargetPortal\"\n" + " }\n" + @@ -3346,6 +3370,59 @@ func SwaggerJsonTemplate() string { " }\n" + " }\n" + " },\n" + + " \"v1IngressLoadBalancerIngress\": {\n" + + " \"description\": \"IngressLoadBalancerIngress represents the status of a load-balancer ingress point.\",\n" + + " \"type\": \"object\",\n" + + " \"properties\": {\n" + + " \"hostname\": {\n" + + " \"type\": \"string\",\n" + + " \"title\": \"Hostname is set for load-balancer ingress points that are DNS based.\\n+optional\"\n" + + " },\n" + + " \"ip\": {\n" + + " \"type\": \"string\",\n" + + " \"title\": \"IP is set for load-balancer ingress points that are IP based.\\n+optional\"\n" + + " },\n" + + " \"ports\": {\n" + + " \"type\": \"array\",\n" + + " \"title\": \"Ports provides information about the ports exposed by this LoadBalancer.\\n+listType=atomic\\n+optional\",\n" + + " \"items\": {\n" + + " \"$ref\": \"#/definitions/v1IngressPortStatus\"\n" + + " }\n" + + " }\n" + + " }\n" + + " },\n" + + " \"v1IngressLoadBalancerStatus\": {\n" + + " \"description\": \"IngressLoadBalancerStatus represents the status of a load-balancer.\",\n" + + " \"type\": \"object\",\n" + + " \"properties\": {\n" + + " \"ingress\": {\n" + + " \"type\": \"array\",\n" + + " \"title\": \"Ingress is a list containing ingress points for the load-balancer.\\n+optional\",\n" + + " \"items\": {\n" + + " \"$ref\": \"#/definitions/v1IngressLoadBalancerIngress\"\n" + + " }\n" + + " }\n" + + " }\n" + + " },\n" + + " \"v1IngressPortStatus\": {\n" + + " \"type\": \"object\",\n" + + " \"title\": \"IngressPortStatus represents the error condition of a service port\",\n" + + " \"properties\": {\n" + + " \"error\": {\n" + + " \"type\": \"string\",\n" + + " \"title\": \"Error is to record the problem with the service port\\nThe format of the error shall comply with the following rules:\\n- built-in error values shall be specified in this file and those shall use\\n CamelCase names\\n- cloud provider specific error values must have names that comply with the\\n format foo.example.com/CamelCase.\\n---\\nThe regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)\\n+optional\\n+kubebuilder:validation:Required\\n+kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`\\n+kubebuilder:validation:MaxLength=316\"\n" + + " },\n" + + " \"port\": {\n" + + " \"description\": \"Port is the port number of the ingress port.\",\n" + + " \"type\": \"integer\",\n" + + " \"format\": \"int32\"\n" + + " },\n" + + " \"protocol\": {\n" + + " \"type\": \"string\",\n" + + " \"title\": \"Protocol is the protocol of the ingress port.\\nThe supported values are: \\\"TCP\\\", \\\"UDP\\\", \\\"SCTP\\\"\"\n" + + " }\n" + + " }\n" + + " },\n" + " \"v1IngressRule\": {\n" + " \"description\": \"IngressRule represents the rules mapping the paths under a specified host to\\nthe related backend services. Incoming requests are first evaluated for a host\\nmatch, then routed to the backend associated with the matching IngressRuleValue.\",\n" + " \"type\": \"object\",\n" + @@ -3394,7 +3471,7 @@ func SwaggerJsonTemplate() string { " },\n" + " \"ingressClassName\": {\n" + " \"type\": \"string\",\n" + - " \"title\": \"IngressClassName is the name of the IngressClass cluster resource. The\\nassociated IngressClass defines which controller will implement the\\nresource. This replaces the deprecated `kubernetes.io/ingress.class`\\nannotation. For backwards compatibility, when that annotation is set, it\\nmust be given precedence over this field. The controller may emit a\\nwarning if the field and annotation have different values.\\nImplementations of this API should ignore Ingresses without a class\\nspecified. An IngressClass resource may be marked as default, which can\\nbe used to set a default value for this field. For more information,\\nrefer to the IngressClass documentation.\\n+optional\"\n" + + " \"title\": \"IngressClassName is the name of an IngressClass cluster resource. Ingress\\ncontroller implementations use this field to know whether they should be\\nserving this Ingress resource, by a transitive connection\\n(controller -\\u003e IngressClass -\\u003e Ingress resource). Although the\\n`kubernetes.io/ingress.class` annotation (simple constant name) was never\\nformally defined, it was widely supported by Ingress controllers to create\\na direct binding between Ingress controller and Ingress resources. Newly\\ncreated Ingress resources should prefer using the field. However, even\\nthough the annotation is officially deprecated, for backwards compatibility\\nreasons, ingress controllers should still honor that annotation if present.\\n+optional\"\n" + " },\n" + " \"rules\": {\n" + " \"type\": \"array\",\n" + @@ -3418,7 +3495,7 @@ func SwaggerJsonTemplate() string { " \"properties\": {\n" + " \"loadBalancer\": {\n" + " \"title\": \"LoadBalancer contains the current status of the load-balancer.\\n+optional\",\n" + - " \"$ref\": \"#/definitions/v1LoadBalancerStatus\"\n" + + " \"$ref\": \"#/definitions/v1IngressLoadBalancerStatus\"\n" + " }\n" + " }\n" + " },\n" + @@ -3444,18 +3521,18 @@ func SwaggerJsonTemplate() string { " \"title\": \"Maps a string key to a path within a volume.\",\n" + " \"properties\": {\n" + " \"key\": {\n" + - " \"description\": \"The key to project.\",\n" + + " \"description\": \"key is the key to project.\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Key\"\n" + " },\n" + " \"mode\": {\n" + - " \"description\": \"Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\\n+optional\",\n" + + " \"description\": \"mode is Optional: mode bits used to set permissions on this file.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nIf not specified, the volume defaultMode will be used.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\\n+optional\",\n" + " \"type\": \"integer\",\n" + " \"format\": \"int32\",\n" + " \"x-go-name\": \"Mode\"\n" + " },\n" + " \"path\": {\n" + - " \"description\": \"The relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n" + + " \"description\": \"path is the relative path of the file to map the key to.\\nMay not be an absolute path.\\nMay not contain the path element '..'.\\nMay not start with the string '..'.\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Path\"\n" + " }\n" + @@ -3518,10 +3595,26 @@ func SwaggerJsonTemplate() string { " \"type\": \"object\",\n" + " \"properties\": {\n" + " \"postStart\": {\n" + - " \"$ref\": \"#/definitions/v1Handler\"\n" + + " \"$ref\": \"#/definitions/v1LifecycleHandler\"\n" + " },\n" + " \"preStop\": {\n" + - " \"$ref\": \"#/definitions/v1Handler\"\n" + + " \"$ref\": \"#/definitions/v1LifecycleHandler\"\n" + + " }\n" + + " },\n" + + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + + " },\n" + + " \"v1LifecycleHandler\": {\n" + + " \"description\": \"LifecycleHandler defines a specific action that should be taken in a lifecycle\\nhook. One and only one of the fields, except TCPSocket must be specified.\",\n" + + " \"type\": \"object\",\n" + + " \"properties\": {\n" + + " \"exec\": {\n" + + " \"$ref\": \"#/definitions/v1ExecAction\"\n" + + " },\n" + + " \"httpGet\": {\n" + + " \"$ref\": \"#/definitions/v1HTTPGetAction\"\n" + + " },\n" + + " \"tcpSocket\": {\n" + + " \"$ref\": \"#/definitions/v1TCPSocketAction\"\n" + " }\n" + " },\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + @@ -3614,6 +3707,7 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n" + " },\n" + " \"v1MountPropagationMode\": {\n" + + " \"description\": \"+enum\",\n" + " \"type\": \"string\",\n" + " \"title\": \"MountPropagationMode describes mount propagation.\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + @@ -3624,17 +3718,17 @@ func SwaggerJsonTemplate() string { " \"title\": \"Represents an NFS mount that lasts the lifetime of a pod.\",\n" + " \"properties\": {\n" + " \"path\": {\n" + - " \"description\": \"Path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n" + + " \"description\": \"path that is exported by the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Path\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"ReadOnly here will force\\nthe NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\\n+optional\",\n" + + " \"description\": \"readOnly here will force the NFS export to be mounted with read-only permissions.\\nDefaults to false.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " },\n" + " \"server\": {\n" + - " \"description\": \"Server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n" + + " \"description\": \"server is the hostname or IP address of the NFS server.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Server\"\n" + " }\n" + @@ -3659,6 +3753,11 @@ func SwaggerJsonTemplate() string { " },\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + + " \"v1NodeInclusionPolicy\": {\n" + + " \"description\": \"NodeInclusionPolicy defines the type of node inclusion policy\\n+enum\",\n" + + " \"type\": \"string\",\n" + + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + + " },\n" + " \"v1NodeSelector\": {\n" + " \"description\": \"A node selector represents the union of the results of one or more label queries\\nover a set of nodes; that is, it represents the OR of the selectors represented\\nby the node selector terms.\\n+structType=atomic\",\n" + " \"type\": \"object\",\n" + @@ -3675,7 +3774,7 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1NodeSelectorOperator\": {\n" + - " \"description\": \"A node selector operator is the set of operators that can be used in\\na node selector requirement.\",\n" + + " \"description\": \"A node selector operator is the set of operators that can be used in\\na node selector requirement.\\n+enum\",\n" + " \"type\": \"string\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + @@ -3725,6 +3824,11 @@ func SwaggerJsonTemplate() string { " },\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + + " \"v1OSName\": {\n" + + " \"type\": \"string\",\n" + + " \"title\": \"OSName is the set of OS'es that can be used in OS.\",\n" + + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + + " },\n" + " \"v1ObjectFieldSelector\": {\n" + " \"description\": \"+structType=atomic\",\n" + " \"type\": \"object\",\n" + @@ -3755,11 +3859,6 @@ func SwaggerJsonTemplate() string { " },\n" + " \"x-go-name\": \"Annotations\"\n" + " },\n" + - " \"clusterName\": {\n" + - " \"description\": \"The name of the cluster which the object belongs to.\\nThis is used to distinguish resources with same name and namespace in different clusters.\\nThis field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.\\n+optional\",\n" + - " \"type\": \"string\",\n" + - " \"x-go-name\": \"ClusterName\"\n" + - " },\n" + " \"creationTimestamp\": {\n" + " \"$ref\": \"#/definitions/v1Time\"\n" + " },\n" + @@ -3781,7 +3880,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"Finalizers\"\n" + " },\n" + " \"generateName\": {\n" + - " \"description\": \"GenerateName is an optional prefix, used by the server, to generate a unique\\nname ONLY IF the Name field has not been provided.\\nIf this field is used, the name returned to the client will be different\\nthan the name passed. This value will also be combined with a unique suffix.\\nThe provided value has the same validation rules as the Name field,\\nand may be truncated by the length of the suffix required to make the value\\nunique on the server.\\n\\nIf this field is specified and the generated name exists, the server will\\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\\nshould retry (optionally after the time indicated in the Retry-After header).\\n\\nApplied only if Name is not specified.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\\n+optional\",\n" + + " \"description\": \"GenerateName is an optional prefix, used by the server, to generate a unique\\nname ONLY IF the Name field has not been provided.\\nIf this field is used, the name returned to the client will be different\\nthan the name passed. This value will also be combined with a unique suffix.\\nThe provided value has the same validation rules as the Name field,\\nand may be truncated by the length of the suffix required to make the value\\nunique on the server.\\n\\nIf this field is specified and the generated name exists, the server will return a 409.\\n\\nApplied only if Name is not specified.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"GenerateName\"\n" + " },\n" + @@ -3831,7 +3930,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"ResourceVersion\"\n" + " },\n" + " \"selfLink\": {\n" + - " \"description\": \"SelfLink is a URL representing this object.\\nPopulated by the system.\\nRead-only.\\n\\nDEPRECATED\\nKubernetes will stop propagating this field in 1.20 release and the field is planned\\nto be removed in 1.21 release.\\n+optional\",\n" + + " \"description\": \"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"SelfLink\"\n" + " },\n" + @@ -3851,7 +3950,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"APIVersion\"\n" + " },\n" + " \"blockOwnerDeletion\": {\n" + - " \"description\": \"If true, AND if the owner has the \\\"foregroundDeletion\\\" finalizer, then\\nthe owner cannot be deleted from the key-value store until this\\nreference is removed.\\nDefaults to false.\\nTo set this field, a user needs \\\"delete\\\" permission of the owner,\\notherwise 422 (Unprocessable Entity) will be returned.\\n+optional\",\n" + + " \"description\": \"If true, AND if the owner has the \\\"foregroundDeletion\\\" finalizer, then\\nthe owner cannot be deleted from the key-value store until this\\nreference is removed.\\nSee https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion\\nfor how the garbage collector interacts with this field and enforces the foreground deletion.\\nDefaults to false.\\nTo set this field, a user needs \\\"delete\\\" permission of the owner,\\notherwise 422 (Unprocessable Entity) will be returned.\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"BlockOwnerDeletion\"\n" + " },\n" + @@ -3877,6 +3976,7 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/apimachinery/pkg/apis/meta/v1\"\n" + " },\n" + " \"v1PersistentVolumeAccessMode\": {\n" + + " \"description\": \"+enum\",\n" + " \"type\": \"string\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + @@ -3885,7 +3985,7 @@ func SwaggerJsonTemplate() string { " \"type\": \"object\",\n" + " \"properties\": {\n" + " \"accessModes\": {\n" + - " \"description\": \"AccessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\\n+optional\",\n" + + " \"description\": \"accessModes contains the desired access modes the volume should have.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"$ref\": \"#/definitions/v1PersistentVolumeAccessMode\"\n" + @@ -3896,7 +3996,7 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1TypedLocalObjectReference\"\n" + " },\n" + " \"dataSourceRef\": {\n" + - " \"$ref\": \"#/definitions/v1TypedLocalObjectReference\"\n" + + " \"$ref\": \"#/definitions/v1TypedObjectReference\"\n" + " },\n" + " \"resources\": {\n" + " \"$ref\": \"#/definitions/v1ResourceRequirements\"\n" + @@ -3905,7 +4005,7 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1LabelSelector\"\n" + " },\n" + " \"storageClassName\": {\n" + - " \"description\": \"Name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\\n+optional\",\n" + + " \"description\": \"storageClassName is the name of the StorageClass required by the claim.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"StorageClassName\"\n" + " },\n" + @@ -3913,7 +4013,7 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1PersistentVolumeMode\"\n" + " },\n" + " \"volumeName\": {\n" + - " \"description\": \"VolumeName is the binding reference to the PersistentVolume backing this claim.\\n+optional\",\n" + + " \"description\": \"volumeName is the binding reference to the PersistentVolume backing this claim.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"VolumeName\"\n" + " }\n" + @@ -3932,11 +4032,6 @@ func SwaggerJsonTemplate() string { " },\n" + " \"x-go-name\": \"Annotations\"\n" + " },\n" + - " \"clusterName\": {\n" + - " \"description\": \"The name of the cluster which the object belongs to.\\nThis is used to distinguish resources with same name and namespace in different clusters.\\nThis field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.\\n+optional\",\n" + - " \"type\": \"string\",\n" + - " \"x-go-name\": \"ClusterName\"\n" + - " },\n" + " \"creationTimestamp\": {\n" + " \"$ref\": \"#/definitions/v1Time\"\n" + " },\n" + @@ -3958,7 +4053,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"Finalizers\"\n" + " },\n" + " \"generateName\": {\n" + - " \"description\": \"GenerateName is an optional prefix, used by the server, to generate a unique\\nname ONLY IF the Name field has not been provided.\\nIf this field is used, the name returned to the client will be different\\nthan the name passed. This value will also be combined with a unique suffix.\\nThe provided value has the same validation rules as the Name field,\\nand may be truncated by the length of the suffix required to make the value\\nunique on the server.\\n\\nIf this field is specified and the generated name exists, the server will\\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\\nshould retry (optionally after the time indicated in the Retry-After header).\\n\\nApplied only if Name is not specified.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\\n+optional\",\n" + + " \"description\": \"GenerateName is an optional prefix, used by the server, to generate a unique\\nname ONLY IF the Name field has not been provided.\\nIf this field is used, the name returned to the client will be different\\nthan the name passed. This value will also be combined with a unique suffix.\\nThe provided value has the same validation rules as the Name field,\\nand may be truncated by the length of the suffix required to make the value\\nunique on the server.\\n\\nIf this field is specified and the generated name exists, the server will return a 409.\\n\\nApplied only if Name is not specified.\\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"GenerateName\"\n" + " },\n" + @@ -4008,7 +4103,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"ResourceVersion\"\n" + " },\n" + " \"selfLink\": {\n" + - " \"description\": \"SelfLink is a URL representing this object.\\nPopulated by the system.\\nRead-only.\\n\\nDEPRECATED\\nKubernetes will stop propagating this field in 1.20 release and the field is planned\\nto be removed in 1.21 release.\\n+optional\",\n" + + " \"description\": \"Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"SelfLink\"\n" + " },\n" + @@ -4027,12 +4122,12 @@ func SwaggerJsonTemplate() string { " \"title\": \"PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace.\",\n" + " \"properties\": {\n" + " \"claimName\": {\n" + - " \"description\": \"ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n" + + " \"description\": \"claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"ClaimName\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\\n+optional\",\n" + + " \"description\": \"readOnly Will force the ReadOnly setting in VolumeMounts.\\nDefault false.\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " }\n" + @@ -4040,6 +4135,7 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1PersistentVolumeMode\": {\n" + + " \"description\": \"+enum\",\n" + " \"type\": \"string\",\n" + " \"title\": \"PersistentVolumeMode describes how a volume is intended to be consumed, either Block or Filesystem.\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + @@ -4049,12 +4145,12 @@ func SwaggerJsonTemplate() string { " \"title\": \"Represents a Photon Controller persistent disk resource.\",\n" + " \"properties\": {\n" + " \"fsType\": {\n" + - " \"description\": \"Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n" + + " \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"FSType\"\n" + " },\n" + " \"pdID\": {\n" + - " \"description\": \"ID that identifies Photon Controller persistent disk\",\n" + + " \"description\": \"pdID is the ID that identifies Photon Controller persistent disk\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"PdID\"\n" + " }\n" + @@ -4095,7 +4191,7 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1LabelSelector\"\n" + " },\n" + " \"namespaces\": {\n" + - " \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\"\\n+optional\",\n" + + " \"description\": \"namespaces specifies a static list of namespace names that the term applies to.\\nThe term is applied to the union of the namespaces listed in this field\\nand the ones selected by namespaceSelector.\\nnull or empty namespaces list and null namespaceSelector means \\\"this pod's namespace\\\".\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"type\": \"string\"\n" + @@ -4187,10 +4283,20 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1PodFSGroupChangePolicy\": {\n" + - " \"description\": \"PodFSGroupChangePolicy holds policies that will be used for applying fsGroup to a volume\\nwhen volume is mounted.\",\n" + + " \"description\": \"PodFSGroupChangePolicy holds policies that will be used for applying fsGroup to a volume\\nwhen volume is mounted.\\n+enum\",\n" + " \"type\": \"string\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + + " \"v1PodOS\": {\n" + + " \"type\": \"object\",\n" + + " \"title\": \"PodOS defines the OS parameters of a pod.\",\n" + + " \"properties\": {\n" + + " \"name\": {\n" + + " \"$ref\": \"#/definitions/v1OSName\"\n" + + " }\n" + + " },\n" + + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + + " },\n" + " \"v1PodReadinessGate\": {\n" + " \"description\": \"PodReadinessGate contains the reference to a pod condition\",\n" + " \"type\": \"object\",\n" + @@ -4201,13 +4307,41 @@ func SwaggerJsonTemplate() string { " },\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + + " \"v1PodResourceClaim\": {\n" + + " \"description\": \"It adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\\nContainers that need access to the ResourceClaim reference it with this name.\",\n" + + " \"type\": \"object\",\n" + + " \"title\": \"PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\",\n" + + " \"properties\": {\n" + + " \"name\": {\n" + + " \"description\": \"Name uniquely identifies this resource claim inside the pod.\\nThis must be a DNS_LABEL.\",\n" + + " \"type\": \"string\",\n" + + " \"x-go-name\": \"Name\"\n" + + " },\n" + + " \"source\": {\n" + + " \"$ref\": \"#/definitions/v1ClaimSource\"\n" + + " }\n" + + " },\n" + + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + + " },\n" + + " \"v1PodSchedulingGate\": {\n" + + " \"type\": \"object\",\n" + + " \"title\": \"PodSchedulingGate is associated to a Pod to guard its scheduling.\",\n" + + " \"properties\": {\n" + + " \"name\": {\n" + + " \"description\": \"Name of the scheduling gate.\\nEach scheduling gate must have a unique name field.\",\n" + + " \"type\": \"string\",\n" + + " \"x-go-name\": \"Name\"\n" + + " }\n" + + " },\n" + + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + + " },\n" + " \"v1PodSecurityContext\": {\n" + " \"description\": \"Some fields are also present in container.securityContext. Field values of\\ncontainer.securityContext take precedence over field values of PodSecurityContext.\",\n" + " \"type\": \"object\",\n" + " \"title\": \"PodSecurityContext holds pod-level security attributes and common container settings.\",\n" + " \"properties\": {\n" + " \"fsGroup\": {\n" + - " \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\n+optional\",\n" + + " \"description\": \"A special supplemental group that applies to all containers in a pod.\\nSome volume types allow the Kubelet to change the ownership of that volume\\nto be owned by the pod:\\n\\n1. The owning GID will be the FSGroup\\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\\n3. The permission bits are OR'd with rw-rw----\\n\\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\\nNote that this field cannot be set when spec.os.name is windows.\\n+optional\",\n" + " \"type\": \"integer\",\n" + " \"format\": \"int64\",\n" + " \"x-go-name\": \"FSGroup\"\n" + @@ -4216,7 +4350,7 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1PodFSGroupChangePolicy\"\n" + " },\n" + " \"runAsGroup\": {\n" + - " \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\n+optional\",\n" + + " \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\\n+optional\",\n" + " \"type\": \"integer\",\n" + " \"format\": \"int64\",\n" + " \"x-go-name\": \"RunAsGroup\"\n" + @@ -4227,7 +4361,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"RunAsNonRoot\"\n" + " },\n" + " \"runAsUser\": {\n" + - " \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\n+optional\",\n" + + " \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in SecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence\\nfor that container.\\nNote that this field cannot be set when spec.os.name is windows.\\n+optional\",\n" + " \"type\": \"integer\",\n" + " \"format\": \"int64\",\n" + " \"x-go-name\": \"RunAsUser\"\n" + @@ -4239,7 +4373,7 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1SeccompProfile\"\n" + " },\n" + " \"supplementalGroups\": {\n" + - " \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID. If unspecified, no groups will be added to\\nany container.\\n+optional\",\n" + + " \"description\": \"A list of groups applied to the first process run in each container, in addition\\nto the container's primary GID, the fsGroup (if specified), and group memberships\\ndefined in the container image for the uid of the container process. If unspecified,\\nno additional groups are added to any container. Note that group memberships\\ndefined in the container image for the uid of the container process are still effective,\\neven if they are not included in this list.\\nNote that this field cannot be set when spec.os.name is windows.\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"type\": \"integer\",\n" + @@ -4248,7 +4382,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"SupplementalGroups\"\n" + " },\n" + " \"sysctls\": {\n" + - " \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\n+optional\",\n" + + " \"description\": \"Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\\nsysctls (by the container runtime) might fail to launch.\\nNote that this field cannot be set when spec.os.name is windows.\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"$ref\": \"#/definitions/v1Sysctl\"\n" + @@ -4299,7 +4433,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"EnableServiceLinks\"\n" + " },\n" + " \"ephemeralContainers\": {\n" + - " \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\\nThis field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\\n+optional\\n+patchMergeKey=name\\n+patchStrategy=merge\",\n" + + " \"description\": \"List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\\npod to perform user-initiated actions such as debugging. This list cannot be specified when\\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\\n+optional\\n+patchMergeKey=name\\n+patchStrategy=merge\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"$ref\": \"#/definitions/v1EphemeralContainer\"\n" + @@ -4329,13 +4463,18 @@ func SwaggerJsonTemplate() string { " \"type\": \"boolean\",\n" + " \"x-go-name\": \"HostPID\"\n" + " },\n" + + " \"hostUsers\": {\n" + + " \"description\": \"Use the host's user namespace.\\nOptional: Default to true.\\nIf set to true or not present, the pod will be run in the host user namespace, useful\\nfor when the pod needs a feature only available to the host user namespace, such as\\nloading a kernel module with CAP_SYS_MODULE.\\nWhen set to false, a new userns is created for the pod. Setting false is useful for\\nmitigating container breakout vulnerabilities even allowing users to run their\\ncontainers as root without actually having root privileges on the host.\\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\\n+k8s:conversion-gen=false\\n+optional\",\n" + + " \"type\": \"boolean\",\n" + + " \"x-go-name\": \"HostUsers\"\n" + + " },\n" + " \"hostname\": {\n" + " \"description\": \"Specifies the hostname of the Pod\\nIf not specified, the pod's hostname will be set to a system-defined value.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Hostname\"\n" + " },\n" + " \"imagePullSecrets\": {\n" + - " \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use. For example,\\nin the case of docker, only DockerConfig type secrets are honored.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\\n+optional\\n+patchMergeKey=name\\n+patchStrategy=merge\",\n" + + " \"description\": \"ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\\nIf specified, these secrets will be passed to individual puller implementations for them to use.\\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\\n+optional\\n+patchMergeKey=name\\n+patchStrategy=merge\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"$ref\": \"#/definitions/v1LocalObjectReference\"\n" + @@ -4363,6 +4502,9 @@ func SwaggerJsonTemplate() string { " },\n" + " \"x-go-name\": \"NodeSelector\"\n" + " },\n" + + " \"os\": {\n" + + " \"$ref\": \"#/definitions/v1PodOS\"\n" + + " },\n" + " \"overhead\": {\n" + " \"$ref\": \"#/definitions/v1ResourceList\"\n" + " },\n" + @@ -4388,11 +4530,19 @@ func SwaggerJsonTemplate() string { " },\n" + " \"x-go-name\": \"ReadinessGates\"\n" + " },\n" + + " \"resourceClaims\": {\n" + + " \"description\": \"ResourceClaims defines which ResourceClaims must be allocated\\nand reserved before the Pod is allowed to start. The resources\\nwill be made available to those containers which consume them\\nby name.\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\nThis field is immutable.\\n\\n+patchMergeKey=name\\n+patchStrategy=merge,retainKeys\\n+listType=map\\n+listMapKey=name\\n+featureGate=DynamicResourceAllocation\\n+optional\",\n" + + " \"type\": \"array\",\n" + + " \"items\": {\n" + + " \"$ref\": \"#/definitions/v1PodResourceClaim\"\n" + + " },\n" + + " \"x-go-name\": \"ResourceClaims\"\n" + + " },\n" + " \"restartPolicy\": {\n" + " \"$ref\": \"#/definitions/v1RestartPolicy\"\n" + " },\n" + " \"runtimeClassName\": {\n" + - " \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\\nThis is a beta feature as of Kubernetes v1.14.\\n+optional\",\n" + + " \"description\": \"RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\\nIf unset or empty, the \\\"legacy\\\" RuntimeClass will be used, which is an implicit class with an\\nempty definition that uses the default runtime handler.\\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"RuntimeClassName\"\n" + " },\n" + @@ -4401,6 +4551,14 @@ func SwaggerJsonTemplate() string { " \"type\": \"string\",\n" + " \"x-go-name\": \"SchedulerName\"\n" + " },\n" + + " \"schedulingGates\": {\n" + + " \"description\": \"SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\\nMore info: https://git.k8s.io/enhancements/keps/sig-scheduling/3521-pod-scheduling-readiness.\\n\\nThis is an alpha-level feature enabled by PodSchedulingReadiness feature gate.\\n+optional\\n+patchMergeKey=name\\n+patchStrategy=merge\\n+listType=map\\n+listMapKey=name\",\n" + + " \"type\": \"array\",\n" + + " \"items\": {\n" + + " \"$ref\": \"#/definitions/v1PodSchedulingGate\"\n" + + " },\n" + + " \"x-go-name\": \"SchedulingGates\"\n" + + " },\n" + " \"securityContext\": {\n" + " \"$ref\": \"#/definitions/v1PodSecurityContext\"\n" + " },\n" + @@ -4485,17 +4643,17 @@ func SwaggerJsonTemplate() string { " \"title\": \"PortworxVolumeSource represents a Portworx volume resource.\",\n" + " \"properties\": {\n" + " \"fsType\": {\n" + - " \"description\": \"FSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n" + + " \"description\": \"fSType represents the filesystem type to mount\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"FSType\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\n+optional\",\n" + + " \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " },\n" + " \"volumeID\": {\n" + - " \"description\": \"VolumeID uniquely identifies a Portworx volume\",\n" + + " \"description\": \"volumeID uniquely identifies a Portworx volume\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"VolumeID\"\n" + " }\n" + @@ -4503,6 +4661,7 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1PreemptionPolicy\": {\n" + + " \"description\": \"+enum\",\n" + " \"type\": \"string\",\n" + " \"title\": \"PreemptionPolicy describes a policy for if/when to preempt a pod.\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + @@ -4536,6 +4695,9 @@ func SwaggerJsonTemplate() string { " \"format\": \"int32\",\n" + " \"x-go-name\": \"FailureThreshold\"\n" + " },\n" + + " \"grpc\": {\n" + + " \"$ref\": \"#/definitions/v1GRPCAction\"\n" + + " },\n" + " \"httpGet\": {\n" + " \"$ref\": \"#/definitions/v1HTTPGetAction\"\n" + " },\n" + @@ -4576,6 +4738,7 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1ProcMountType\": {\n" + + " \"description\": \"+enum\",\n" + " \"type\": \"string\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + @@ -4584,13 +4747,13 @@ func SwaggerJsonTemplate() string { " \"type\": \"object\",\n" + " \"properties\": {\n" + " \"defaultMode\": {\n" + - " \"description\": \"Mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\\n+optional\",\n" + + " \"description\": \"defaultMode are the mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\\n+optional\",\n" + " \"type\": \"integer\",\n" + " \"format\": \"int32\",\n" + " \"x-go-name\": \"DefaultMode\"\n" + " },\n" + " \"sources\": {\n" + - " \"description\": \"list of volume projections\\n+optional\",\n" + + " \"description\": \"sources is the list of volume projections\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"$ref\": \"#/definitions/v1VolumeProjection\"\n" + @@ -4601,12 +4764,13 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1Protocol\": {\n" + + " \"description\": \"+enum\",\n" + " \"type\": \"string\",\n" + " \"title\": \"Protocol defines network protocols supported for things like container ports.\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1PullPolicy\": {\n" + - " \"description\": \"PullPolicy describes a policy for if/when to pull a container image\",\n" + + " \"description\": \"PullPolicy describes a policy for if/when to pull a container image\\n+enum\",\n" + " \"type\": \"string\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + @@ -4616,32 +4780,32 @@ func SwaggerJsonTemplate() string { " \"title\": \"Represents a Quobyte mount that lasts the lifetime of a pod.\",\n" + " \"properties\": {\n" + " \"group\": {\n" + - " \"description\": \"Group to map volume access to\\nDefault is no group\\n+optional\",\n" + + " \"description\": \"group to map volume access to\\nDefault is no group\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Group\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"ReadOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\\n+optional\",\n" + + " \"description\": \"readOnly here will force the Quobyte volume to be mounted with read-only permissions.\\nDefaults to false.\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " },\n" + " \"registry\": {\n" + - " \"description\": \"Registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n" + + " \"description\": \"registry represents a single or multiple Quobyte Registry services\\nspecified as a string as host:port pair (multiple entries are separated with commas)\\nwhich acts as the central registry for volumes\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Registry\"\n" + " },\n" + " \"tenant\": {\n" + - " \"description\": \"Tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\\n+optional\",\n" + + " \"description\": \"tenant owning the given Quobyte volume in the Backend\\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Tenant\"\n" + " },\n" + " \"user\": {\n" + - " \"description\": \"User to map volume access to\\nDefaults to serivceaccount user\\n+optional\",\n" + + " \"description\": \"user to map volume access to\\nDefaults to serivceaccount user\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"User\"\n" + " },\n" + " \"volume\": {\n" + - " \"description\": \"Volume is a string that references an already created Quobyte volume by name.\",\n" + + " \"description\": \"volume is a string that references an already created Quobyte volume by name.\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Volume\"\n" + " }\n" + @@ -4654,22 +4818,22 @@ func SwaggerJsonTemplate() string { " \"title\": \"Represents a Rados Block Device mount that lasts the lifetime of a pod.\",\n" + " \"properties\": {\n" + " \"fsType\": {\n" + - " \"description\": \"Filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\\n+optional\",\n" + + " \"description\": \"fsType is the filesystem type of the volume that you want to mount.\\nTip: Ensure that the filesystem type is supported by the host operating system.\\nExamples: \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\\nTODO: how do we prevent errors in the filesystem from compromising the machine\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"FSType\"\n" + " },\n" + " \"image\": {\n" + - " \"description\": \"The rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n" + + " \"description\": \"image is the rados image name.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"RBDImage\"\n" + " },\n" + " \"keyring\": {\n" + - " \"description\": \"Keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\\n+optional\",\n" + + " \"description\": \"keyring is the path to key ring for RBDUser.\\nDefault is /etc/ceph/keyring.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Keyring\"\n" + " },\n" + " \"monitors\": {\n" + - " \"description\": \"A collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n" + + " \"description\": \"monitors is a collection of Ceph monitors.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"type\": \"string\"\n" + @@ -4677,12 +4841,12 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"CephMonitors\"\n" + " },\n" + " \"pool\": {\n" + - " \"description\": \"The rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\\n+optional\",\n" + + " \"description\": \"pool is the rados pool name.\\nDefault is rbd.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"RBDPool\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"ReadOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\\n+optional\",\n" + + " \"description\": \"readOnly here will force the ReadOnly setting in VolumeMounts.\\nDefaults to false.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " },\n" + @@ -4690,13 +4854,25 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1LocalObjectReference\"\n" + " },\n" + " \"user\": {\n" + - " \"description\": \"The rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\\n+optional\",\n" + + " \"description\": \"user is the rados user name.\\nDefault is admin.\\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"RadosUser\"\n" + " }\n" + " },\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + + " \"v1ResourceClaim\": {\n" + + " \"type\": \"object\",\n" + + " \"title\": \"ResourceClaim references one entry in PodSpec.ResourceClaims.\",\n" + + " \"properties\": {\n" + + " \"name\": {\n" + + " \"description\": \"Name must match the name of one entry in pod.spec.resourceClaims of\\nthe Pod where this field is used. It makes that resource available\\ninside a container.\",\n" + + " \"type\": \"string\",\n" + + " \"x-go-name\": \"Name\"\n" + + " }\n" + + " },\n" + + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + + " },\n" + " \"v1ResourceFieldSelector\": {\n" + " \"description\": \"ResourceFieldSelector represents container resources (cpu, memory) and their output format\\n+structType=atomic\",\n" + " \"type\": \"object\",\n" + @@ -4729,6 +4905,14 @@ func SwaggerJsonTemplate() string { " \"type\": \"object\",\n" + " \"title\": \"ResourceRequirements describes the compute resource requirements.\",\n" + " \"properties\": {\n" + + " \"claims\": {\n" + + " \"description\": \"Claims lists the names of resources, defined in spec.resourceClaims,\\nthat are used by this container.\\n\\nThis is an alpha field and requires enabling the\\nDynamicResourceAllocation feature gate.\\n\\nThis field is immutable. It can only be set for containers.\\n\\n+listType=map\\n+listMapKey=name\\n+featureGate=DynamicResourceAllocation\\n+optional\",\n" + + " \"type\": \"array\",\n" + + " \"items\": {\n" + + " \"$ref\": \"#/definitions/v1ResourceClaim\"\n" + + " },\n" + + " \"x-go-name\": \"Claims\"\n" + + " },\n" + " \"limits\": {\n" + " \"$ref\": \"#/definitions/v1ResourceList\"\n" + " },\n" + @@ -4739,7 +4923,7 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1RestartPolicy\": {\n" + - " \"description\": \"Only one of the following restart policies may be specified.\\nIf none of the following policies is specified, the default one\\nis RestartPolicyAlways.\",\n" + + " \"description\": \"Only one of the following restart policies may be specified.\\nIf none of the following policies is specified, the default one\\nis RestartPolicyAlways.\\n+enum\",\n" + " \"type\": \"string\",\n" + " \"title\": \"RestartPolicy describes how the container should be restarted.\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + @@ -4776,22 +4960,22 @@ func SwaggerJsonTemplate() string { " \"type\": \"object\",\n" + " \"properties\": {\n" + " \"fsType\": {\n" + - " \"description\": \"Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\\n+optional\",\n" + + " \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\".\\nDefault is \\\"xfs\\\".\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"FSType\"\n" + " },\n" + " \"gateway\": {\n" + - " \"description\": \"The host address of the ScaleIO API Gateway.\",\n" + + " \"description\": \"gateway is the host address of the ScaleIO API Gateway.\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Gateway\"\n" + " },\n" + " \"protectionDomain\": {\n" + - " \"description\": \"The name of the ScaleIO Protection Domain for the configured storage.\\n+optional\",\n" + + " \"description\": \"protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"ProtectionDomain\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\n+optional\",\n" + + " \"description\": \"readOnly Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " },\n" + @@ -4799,27 +4983,27 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1LocalObjectReference\"\n" + " },\n" + " \"sslEnabled\": {\n" + - " \"description\": \"Flag to enable/disable SSL communication with Gateway, default false\\n+optional\",\n" + + " \"description\": \"sslEnabled Flag enable/disable SSL communication with Gateway, default false\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"SSLEnabled\"\n" + " },\n" + " \"storageMode\": {\n" + - " \"description\": \"Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\\n+optional\",\n" + + " \"description\": \"storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\\nDefault is ThinProvisioned.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"StorageMode\"\n" + " },\n" + " \"storagePool\": {\n" + - " \"description\": \"The ScaleIO Storage Pool associated with the protection domain.\\n+optional\",\n" + + " \"description\": \"storagePool is the ScaleIO Storage Pool associated with the protection domain.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"StoragePool\"\n" + " },\n" + " \"system\": {\n" + - " \"description\": \"The name of the storage system as configured in ScaleIO.\",\n" + + " \"description\": \"system is the name of the storage system as configured in ScaleIO.\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"System\"\n" + " },\n" + " \"volumeName\": {\n" + - " \"description\": \"The name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n" + + " \"description\": \"volumeName is the name of a volume already created in the ScaleIO system\\nthat is associated with this volume source.\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"VolumeName\"\n" + " }\n" + @@ -4843,6 +5027,7 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1SeccompProfileType\": {\n" + + " \"description\": \"+enum\",\n" + " \"type\": \"string\",\n" + " \"title\": \"SeccompProfileType defines the supported seccomp profile types.\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + @@ -4894,7 +5079,7 @@ func SwaggerJsonTemplate() string { " \"title\": \"Adapts a secret into a projected volume.\",\n" + " \"properties\": {\n" + " \"items\": {\n" + - " \"description\": \"If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\\n+optional\",\n" + + " \"description\": \"items if unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"$ref\": \"#/definitions/v1KeyToPath\"\n" + @@ -4907,7 +5092,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"Name\"\n" + " },\n" + " \"optional\": {\n" + - " \"description\": \"Specify whether the Secret or its key must be defined\\n+optional\",\n" + + " \"description\": \"optional field specify whether the Secret or its key must be defined\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"Optional\"\n" + " }\n" + @@ -4920,13 +5105,13 @@ func SwaggerJsonTemplate() string { " \"title\": \"Adapts a Secret into a volume.\",\n" + " \"properties\": {\n" + " \"defaultMode\": {\n" + - " \"description\": \"Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\\n+optional\",\n" + + " \"description\": \"defaultMode is Optional: mode bits used to set permissions on created files by default.\\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\\nYAML accepts both octal and decimal values, JSON requires decimal values\\nfor mode bits. Defaults to 0644.\\nDirectories within the path are not affected by this setting.\\nThis might be in conflict with other options that affect the file\\nmode, like fsGroup, and the result can be other mode bits set.\\n+optional\",\n" + " \"type\": \"integer\",\n" + " \"format\": \"int32\",\n" + " \"x-go-name\": \"DefaultMode\"\n" + " },\n" + " \"items\": {\n" + - " \"description\": \"If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\\n+optional\",\n" + + " \"description\": \"items If unspecified, each key-value pair in the Data field of the referenced\\nSecret will be projected into the volume as a file whose name is the\\nkey and content is the value. If specified, the listed keys will be\\nprojected into the specified paths, and unlisted keys will not be\\npresent. If a key is specified which is not present in the Secret,\\nthe volume setup will error unless it is marked optional. Paths must be\\nrelative and may not contain the '..' path or start with '..'.\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"$ref\": \"#/definitions/v1KeyToPath\"\n" + @@ -4934,12 +5119,12 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"Items\"\n" + " },\n" + " \"optional\": {\n" + - " \"description\": \"Specify whether the Secret or its keys must be defined\\n+optional\",\n" + + " \"description\": \"optional field specify whether the Secret or its keys must be defined\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"Optional\"\n" + " },\n" + " \"secretName\": {\n" + - " \"description\": \"Name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\\n+optional\",\n" + + " \"description\": \"secretName is the name of the secret in the pod's namespace to use.\\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"SecretName\"\n" + " }\n" + @@ -4952,7 +5137,7 @@ func SwaggerJsonTemplate() string { " \"title\": \"SecurityContext holds security configuration that will be applied to a container.\",\n" + " \"properties\": {\n" + " \"allowPrivilegeEscalation\": {\n" + - " \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\n+optional\",\n" + + " \"description\": \"AllowPrivilegeEscalation controls whether a process can gain more\\nprivileges than its parent process. This bool directly controls if\\nthe no_new_privs flag will be set on the container process.\\nAllowPrivilegeEscalation is true always when the container is:\\n1) run as Privileged\\n2) has CAP_SYS_ADMIN\\nNote that this field cannot be set when spec.os.name is windows.\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"AllowPrivilegeEscalation\"\n" + " },\n" + @@ -4960,7 +5145,7 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1Capabilities\"\n" + " },\n" + " \"privileged\": {\n" + - " \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\n+optional\",\n" + + " \"description\": \"Run container in privileged mode.\\nProcesses in privileged containers are essentially equivalent to root on the host.\\nDefaults to false.\\nNote that this field cannot be set when spec.os.name is windows.\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"Privileged\"\n" + " },\n" + @@ -4968,12 +5153,12 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1ProcMountType\"\n" + " },\n" + " \"readOnlyRootFilesystem\": {\n" + - " \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\n+optional\",\n" + + " \"description\": \"Whether this container has a read-only root filesystem.\\nDefault is false.\\nNote that this field cannot be set when spec.os.name is windows.\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnlyRootFilesystem\"\n" + " },\n" + " \"runAsGroup\": {\n" + - " \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\n+optional\",\n" + + " \"description\": \"The GID to run the entrypoint of the container process.\\nUses runtime default if unset.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\\n+optional\",\n" + " \"type\": \"integer\",\n" + " \"format\": \"int64\",\n" + " \"x-go-name\": \"RunAsGroup\"\n" + @@ -4984,7 +5169,7 @@ func SwaggerJsonTemplate() string { " \"x-go-name\": \"RunAsNonRoot\"\n" + " },\n" + " \"runAsUser\": {\n" + - " \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\n+optional\",\n" + + " \"description\": \"The UID to run the entrypoint of the container process.\\nDefaults to user specified in image metadata if unspecified.\\nMay also be set in PodSecurityContext. If set in both SecurityContext and\\nPodSecurityContext, the value specified in SecurityContext takes precedence.\\nNote that this field cannot be set when spec.os.name is windows.\\n+optional\",\n" + " \"type\": \"integer\",\n" + " \"format\": \"int64\",\n" + " \"x-go-name\": \"RunAsUser\"\n" + @@ -5024,18 +5209,18 @@ func SwaggerJsonTemplate() string { " \"type\": \"object\",\n" + " \"properties\": {\n" + " \"audience\": {\n" + - " \"description\": \"Audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\\n+optional\",\n" + + " \"description\": \"audience is the intended audience of the token. A recipient of a token\\nmust identify itself with an identifier specified in the audience of the\\ntoken, and otherwise should reject the token. The audience defaults to the\\nidentifier of the apiserver.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Audience\"\n" + " },\n" + " \"expirationSeconds\": {\n" + - " \"description\": \"ExpirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\\n+optional\",\n" + + " \"description\": \"expirationSeconds is the requested duration of validity of the service\\naccount token. As the token approaches expiration, the kubelet volume\\nplugin will proactively rotate the service account token. The kubelet will\\nstart trying to rotate the token if the token is older than 80 percent of\\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\\nand must be at least 10 minutes.\\n+optional\",\n" + " \"type\": \"integer\",\n" + " \"format\": \"int64\",\n" + " \"x-go-name\": \"ExpirationSeconds\"\n" + " },\n" + " \"path\": {\n" + - " \"description\": \"Path is the path relative to the mount point of the file to project the\\ntoken into.\",\n" + + " \"description\": \"path is the path relative to the mount point of the file to project the\\ntoken into.\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Path\"\n" + " }\n" + @@ -5063,7 +5248,7 @@ func SwaggerJsonTemplate() string { " \"properties\": {\n" + " \"appProtocol\": {\n" + " \"type\": \"string\",\n" + - " \"title\": \"The application protocol for this port.\\nThis field follows standard Kubernetes label syntax.\\nUn-prefixed names are reserved for IANA standard service names (as per\\nRFC-6335 and http://www.iana.org/assignments/service-names).\\nNon-standard protocols should use prefixed names such as\\nmycompany.com/my-custom-protocol.\\n+optional\"\n" + + " \"title\": \"The application protocol for this port.\\nThis field follows standard Kubernetes label syntax.\\nUn-prefixed names are reserved for IANA standard service names (as per\\nRFC-6335 and https://www.iana.org/assignments/service-names).\\nNon-standard protocols should use prefixed names such as\\nmycompany.com/my-custom-protocol.\\n+optional\"\n" + " },\n" + " \"name\": {\n" + " \"type\": \"string\",\n" + @@ -5095,14 +5280,14 @@ func SwaggerJsonTemplate() string { " \"properties\": {\n" + " \"allocateLoadBalancerNodePorts\": {\n" + " \"type\": \"boolean\",\n" + - " \"title\": \"allocateLoadBalancerNodePorts defines if NodePorts will be automatically\\nallocated for services with type LoadBalancer. Default is \\\"true\\\". It\\nmay be set to \\\"false\\\" if the cluster load-balancer does not rely on\\nNodePorts. If the caller requests specific NodePorts (by specifying a\\nvalue), those requests will be respected, regardless of this field.\\nThis field may only be set for services with type LoadBalancer and will\\nbe cleared if the type is changed to any other type.\\nThis field is beta-level and is only honored by servers that enable the ServiceLBNodePortControl feature.\\n+featureGate=ServiceLBNodePortControl\\n+optional\"\n" + + " \"title\": \"allocateLoadBalancerNodePorts defines if NodePorts will be automatically\\nallocated for services with type LoadBalancer. Default is \\\"true\\\". It\\nmay be set to \\\"false\\\" if the cluster load-balancer does not rely on\\nNodePorts. If the caller requests specific NodePorts (by specifying a\\nvalue), those requests will be respected, regardless of this field.\\nThis field may only be set for services with type LoadBalancer and will\\nbe cleared if the type is changed to any other type.\\n+optional\"\n" + " },\n" + " \"clusterIP\": {\n" + " \"type\": \"string\",\n" + " \"title\": \"clusterIP is the IP address of the service and is usually assigned\\nrandomly. If an address is specified manually, is in-range (as per\\nsystem configuration), and is not in use, it will be allocated to the\\nservice; otherwise creation of the service will fail. This field may not\\nbe changed through updates unless the type field is also being changed\\nto ExternalName (which requires this field to be blank) or the type\\nfield is being changed from ExternalName (in which case this field may\\noptionally be specified, as describe above). Valid values are \\\"None\\\",\\nempty string (\\\"\\\"), or a valid IP address. Setting this to \\\"None\\\" makes a\\n\\\"headless service\\\" (no virtual IP), which is useful when direct endpoint\\nconnections are preferred and proxying is not required. Only applies to\\ntypes ClusterIP, NodePort, and LoadBalancer. If this field is specified\\nwhen creating a Service of type ExternalName, creation will fail. This\\nfield will be wiped when updating a Service to type ExternalName.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\\n+optional\"\n" + " },\n" + " \"clusterIPs\": {\n" + - " \"description\": \"ClusterIPs is a list of IP addresses assigned to this service, and are\\nusually assigned randomly. If an address is specified manually, is\\nin-range (as per system configuration), and is not in use, it will be\\nallocated to the service; otherwise creation of the service will fail.\\nThis field may not be changed through updates unless the type field is\\nalso being changed to ExternalName (which requires this field to be\\nempty) or the type field is being changed from ExternalName (in which\\ncase this field may optionally be specified, as describe above). Valid\\nvalues are \\\"None\\\", empty string (\\\"\\\"), or a valid IP address. Setting\\nthis to \\\"None\\\" makes a \\\"headless service\\\" (no virtual IP), which is\\nuseful when direct endpoint connections are preferred and proxying is\\nnot required. Only applies to types ClusterIP, NodePort, and\\nLoadBalancer. If this field is specified when creating a Service of type\\nExternalName, creation will fail. This field will be wiped when updating\\na Service to type ExternalName. If this field is not specified, it will\\nbe initialized from the clusterIP field. If this field is specified,\\nclients must ensure that clusterIPs[0] and clusterIP have the same\\nvalue.\\n\\nUnless the \\\"IPv6DualStack\\\" feature gate is enabled, this field is\\nlimited to one value, which must be the same as the clusterIP field. If\\nthe feature gate is enabled, this field may hold a maximum of two\\nentries (dual-stack IPs, in either order). These IPs must correspond to\\nthe values of the ipFamilies field. Both clusterIPs and ipFamilies are\\ngoverned by the ipFamilyPolicy field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\\n+listType=atomic\\n+optional\",\n" + + " \"description\": \"ClusterIPs is a list of IP addresses assigned to this service, and are\\nusually assigned randomly. If an address is specified manually, is\\nin-range (as per system configuration), and is not in use, it will be\\nallocated to the service; otherwise creation of the service will fail.\\nThis field may not be changed through updates unless the type field is\\nalso being changed to ExternalName (which requires this field to be\\nempty) or the type field is being changed from ExternalName (in which\\ncase this field may optionally be specified, as describe above). Valid\\nvalues are \\\"None\\\", empty string (\\\"\\\"), or a valid IP address. Setting\\nthis to \\\"None\\\" makes a \\\"headless service\\\" (no virtual IP), which is\\nuseful when direct endpoint connections are preferred and proxying is\\nnot required. Only applies to types ClusterIP, NodePort, and\\nLoadBalancer. If this field is specified when creating a Service of type\\nExternalName, creation will fail. This field will be wiped when updating\\na Service to type ExternalName. If this field is not specified, it will\\nbe initialized from the clusterIP field. If this field is specified,\\nclients must ensure that clusterIPs[0] and clusterIP have the same\\nvalue.\\n\\nThis field may hold a maximum of two entries (dual-stack IPs, in either order).\\nThese IPs must correspond to the values of the ipFamilies field. Both\\nclusterIPs and ipFamilies are governed by the ipFamilyPolicy field.\\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\\n+listType=atomic\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"type\": \"string\"\n" + @@ -5121,19 +5306,19 @@ func SwaggerJsonTemplate() string { " },\n" + " \"externalTrafficPolicy\": {\n" + " \"type\": \"string\",\n" + - " \"title\": \"externalTrafficPolicy denotes if this Service desires to route external\\ntraffic to node-local or cluster-wide endpoints. \\\"Local\\\" preserves the\\nclient source IP and avoids a second hop for LoadBalancer and Nodeport\\ntype services, but risks potentially imbalanced traffic spreading.\\n\\\"Cluster\\\" obscures the client source IP and may cause a second hop to\\nanother node, but should have good overall load-spreading.\\n+optional\"\n" + + " \"title\": \"externalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on one of the Service's \\\"externally-facing\\\" addresses (NodePorts,\\nExternalIPs, and LoadBalancer IPs). If set to \\\"Local\\\", the proxy will configure\\nthe service in a way that assumes that external load balancers will take care\\nof balancing the service traffic between nodes, and so each node will deliver\\ntraffic only to the node-local endpoints of the service, without masquerading\\nthe client source IP. (Traffic mistakenly sent to a node with no endpoints will\\nbe dropped.) The default value, \\\"Cluster\\\", uses the standard behavior of\\nrouting to all endpoints evenly (possibly modified by topology and other\\nfeatures). Note that traffic sent to an External IP or LoadBalancer IP from\\nwithin the cluster will always get \\\"Cluster\\\" semantics, but clients sending to\\na NodePort from within the cluster may need to take traffic policy into account\\nwhen picking a node.\\n+optional\"\n" + " },\n" + " \"healthCheckNodePort\": {\n" + " \"type\": \"integer\",\n" + " \"format\": \"int32\",\n" + - " \"title\": \"healthCheckNodePort specifies the healthcheck nodePort for the service.\\nThis only applies when type is set to LoadBalancer and\\nexternalTrafficPolicy is set to Local. If a value is specified, is\\nin-range, and is not in use, it will be used. If not specified, a value\\nwill be automatically allocated. External systems (e.g. load-balancers)\\ncan use this port to determine if a given node holds endpoints for this\\nservice or not. If this field is specified when creating a Service\\nwhich does not need it, creation will fail. This field will be wiped\\nwhen updating a Service to no longer need it (e.g. changing type).\\n+optional\"\n" + + " \"title\": \"healthCheckNodePort specifies the healthcheck nodePort for the service.\\nThis only applies when type is set to LoadBalancer and\\nexternalTrafficPolicy is set to Local. If a value is specified, is\\nin-range, and is not in use, it will be used. If not specified, a value\\nwill be automatically allocated. External systems (e.g. load-balancers)\\ncan use this port to determine if a given node holds endpoints for this\\nservice or not. If this field is specified when creating a Service\\nwhich does not need it, creation will fail. This field will be wiped\\nwhen updating a Service to no longer need it (e.g. changing type).\\nThis field cannot be updated once set.\\n+optional\"\n" + " },\n" + " \"internalTrafficPolicy\": {\n" + " \"type\": \"string\",\n" + - " \"title\": \"InternalTrafficPolicy specifies if the cluster internal traffic\\nshould be routed to all endpoints or node-local endpoints only.\\n\\\"Cluster\\\" routes internal traffic to a Service to all endpoints.\\n\\\"Local\\\" routes traffic to node-local endpoints only, traffic is\\ndropped if no node-local endpoints are ready.\\nThe default value is \\\"Cluster\\\".\\n+featureGate=ServiceInternalTrafficPolicy\\n+optional\"\n" + + " \"title\": \"InternalTrafficPolicy describes how nodes distribute service traffic they\\nreceive on the ClusterIP. If set to \\\"Local\\\", the proxy will assume that pods\\nonly want to talk to endpoints of the service on the same node as the pod,\\ndropping the traffic if there are no local endpoints. The default value,\\n\\\"Cluster\\\", uses the standard behavior of routing to all endpoints evenly\\n(possibly modified by topology and other features).\\n+optional\"\n" + " },\n" + " \"ipFamilies\": {\n" + - " \"description\": \"IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this\\nservice, and is gated by the \\\"IPv6DualStack\\\" feature gate. This field\\nis usually assigned automatically based on cluster configuration and the\\nipFamilyPolicy field. If this field is specified manually, the requested\\nfamily is available in the cluster, and ipFamilyPolicy allows it, it\\nwill be used; otherwise creation of the service will fail. This field\\nis conditionally mutable: it allows for adding or removing a secondary\\nIP family, but it does not allow changing the primary IP family of the\\nService. Valid values are \\\"IPv4\\\" and \\\"IPv6\\\". This field only applies\\nto Services of types ClusterIP, NodePort, and LoadBalancer, and does\\napply to \\\"headless\\\" services. This field will be wiped when updating a\\nService to type ExternalName.\\n\\nThis field may hold a maximum of two entries (dual-stack families, in\\neither order). These families must correspond to the values of the\\nclusterIPs field, if specified. Both clusterIPs and ipFamilies are\\ngoverned by the ipFamilyPolicy field.\\n+listType=atomic\\n+optional\",\n" + + " \"description\": \"IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this\\nservice. This field is usually assigned automatically based on cluster\\nconfiguration and the ipFamilyPolicy field. If this field is specified\\nmanually, the requested family is available in the cluster,\\nand ipFamilyPolicy allows it, it will be used; otherwise creation of\\nthe service will fail. This field is conditionally mutable: it allows\\nfor adding or removing a secondary IP family, but it does not allow\\nchanging the primary IP family of the Service. Valid values are \\\"IPv4\\\"\\nand \\\"IPv6\\\". This field only applies to Services of types ClusterIP,\\nNodePort, and LoadBalancer, and does apply to \\\"headless\\\" services.\\nThis field will be wiped when updating a Service to type ExternalName.\\n\\nThis field may hold a maximum of two entries (dual-stack families, in\\neither order). These families must correspond to the values of the\\nclusterIPs field, if specified. Both clusterIPs and ipFamilies are\\ngoverned by the ipFamilyPolicy field.\\n+listType=atomic\\n+optional\",\n" + " \"type\": \"array\",\n" + " \"items\": {\n" + " \"type\": \"string\"\n" + @@ -5141,15 +5326,15 @@ func SwaggerJsonTemplate() string { " },\n" + " \"ipFamilyPolicy\": {\n" + " \"type\": \"string\",\n" + - " \"title\": \"IPFamilyPolicy represents the dual-stack-ness requested or required by\\nthis Service, and is gated by the \\\"IPv6DualStack\\\" feature gate. If\\nthere is no value provided, then this field will be set to SingleStack.\\nServices can be \\\"SingleStack\\\" (a single IP family), \\\"PreferDualStack\\\"\\n(two IP families on dual-stack configured clusters or a single IP family\\non single-stack clusters), or \\\"RequireDualStack\\\" (two IP families on\\ndual-stack configured clusters, otherwise fail). The ipFamilies and\\nclusterIPs fields depend on the value of this field. This field will be\\nwiped when updating a service to type ExternalName.\\n+optional\"\n" + + " \"title\": \"IPFamilyPolicy represents the dual-stack-ness requested or required by\\nthis Service. If there is no value provided, then this field will be set\\nto SingleStack. Services can be \\\"SingleStack\\\" (a single IP family),\\n\\\"PreferDualStack\\\" (two IP families on dual-stack configured clusters or\\na single IP family on single-stack clusters), or \\\"RequireDualStack\\\"\\n(two IP families on dual-stack configured clusters, otherwise fail). The\\nipFamilies and clusterIPs fields depend on the value of this field. This\\nfield will be wiped when updating a service to type ExternalName.\\n+optional\"\n" + " },\n" + " \"loadBalancerClass\": {\n" + " \"type\": \"string\",\n" + - " \"title\": \"loadBalancerClass is the class of the load balancer implementation this Service belongs to.\\nIf specified, the value of this field must be a label-style identifier, with an optional prefix,\\ne.g. \\\"internal-vip\\\" or \\\"example.com/internal-vip\\\". Unprefixed names are reserved for end-users.\\nThis field can only be set when the Service type is 'LoadBalancer'. If not set, the default load\\nbalancer implementation is used, today this is typically done through the cloud provider integration,\\nbut should apply for any default implementation. If set, it is assumed that a load balancer\\nimplementation is watching for Services with a matching class. Any default load balancer\\nimplementation (e.g. cloud providers) should ignore Services that set this field.\\nThis field can only be set when creating or updating a Service to type 'LoadBalancer'.\\nOnce set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.\\n+featureGate=LoadBalancerClass\\n+optional\"\n" + + " \"title\": \"loadBalancerClass is the class of the load balancer implementation this Service belongs to.\\nIf specified, the value of this field must be a label-style identifier, with an optional prefix,\\ne.g. \\\"internal-vip\\\" or \\\"example.com/internal-vip\\\". Unprefixed names are reserved for end-users.\\nThis field can only be set when the Service type is 'LoadBalancer'. If not set, the default load\\nbalancer implementation is used, today this is typically done through the cloud provider integration,\\nbut should apply for any default implementation. If set, it is assumed that a load balancer\\nimplementation is watching for Services with a matching class. Any default load balancer\\nimplementation (e.g. cloud providers) should ignore Services that set this field.\\nThis field can only be set when creating or updating a Service to type 'LoadBalancer'.\\nOnce set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.\\n+optional\"\n" + " },\n" + " \"loadBalancerIP\": {\n" + " \"type\": \"string\",\n" + - " \"title\": \"Only applies to Service Type: LoadBalancer\\nLoadBalancer will get created with the IP specified in this field.\\nThis feature depends on whether the underlying cloud-provider supports specifying\\nthe loadBalancerIP when a load balancer is created.\\nThis field will be ignored if the cloud-provider does not support the feature.\\n+optional\"\n" + + " \"title\": \"Only applies to Service Type: LoadBalancer.\\nThis feature depends on whether the underlying cloud-provider supports specifying\\nthe loadBalancerIP when a load balancer is created.\\nThis field will be ignored if the cloud-provider does not support the feature.\\nDeprecated: This field was under-specified and its meaning varies across implementations,\\nand it cannot support dual-stack.\\nAs of Kubernetes v1.24, users are encouraged to use implementation-specific annotations when available.\\nThis field may be removed in a future API version.\\n+optional\"\n" + " },\n" + " \"loadBalancerSourceRanges\": {\n" + " \"type\": \"array\",\n" + @@ -5227,12 +5412,12 @@ func SwaggerJsonTemplate() string { " \"title\": \"Represents a StorageOS persistent volume resource.\",\n" + " \"properties\": {\n" + " \"fsType\": {\n" + - " \"description\": \"Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\n+optional\",\n" + + " \"description\": \"fsType is the filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"FSType\"\n" + " },\n" + " \"readOnly\": {\n" + - " \"description\": \"Defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\n+optional\",\n" + + " \"description\": \"readOnly defaults to false (read/write). ReadOnly here will force\\nthe ReadOnly setting in VolumeMounts.\\n+optional\",\n" + " \"type\": \"boolean\",\n" + " \"x-go-name\": \"ReadOnly\"\n" + " },\n" + @@ -5240,12 +5425,12 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1LocalObjectReference\"\n" + " },\n" + " \"volumeName\": {\n" + - " \"description\": \"VolumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n" + + " \"description\": \"volumeName is the human-readable name of the StorageOS volume. Volume\\nnames are only unique within a namespace.\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"VolumeName\"\n" + " },\n" + " \"volumeNamespace\": {\n" + - " \"description\": \"VolumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\\n+optional\",\n" + + " \"description\": \"volumeNamespace specifies the scope of the volume within StorageOS. If no\\nnamespace is specified then the Pod's namespace will be used. This allows the\\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\\nSet VolumeName to any name to override the default behaviour.\\nSet to \\\"default\\\" if you are not using namespaces within StorageOS.\\nNamespaces that do not pre-exist within StorageOS will be created.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"VolumeNamespace\"\n" + " }\n" + @@ -5285,10 +5470,12 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1TaintEffect\": {\n" + + " \"description\": \"+enum\",\n" + " \"type\": \"string\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1TerminationMessagePolicy\": {\n" + + " \"description\": \"+enum\",\n" + " \"type\": \"string\",\n" + " \"title\": \"TerminationMessagePolicy describes how termination messages are retrieved from a container.\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + @@ -5330,6 +5517,7 @@ func SwaggerJsonTemplate() string { " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1TolerationOperator\": {\n" + + " \"description\": \"+enum\",\n" + " \"type\": \"string\",\n" + " \"title\": \"A toleration operator is the set of operators that can be used in a toleration.\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + @@ -5341,14 +5529,34 @@ func SwaggerJsonTemplate() string { " \"labelSelector\": {\n" + " \"$ref\": \"#/definitions/v1LabelSelector\"\n" + " },\n" + + " \"matchLabelKeys\": {\n" + + " \"description\": \"MatchLabelKeys is a set of pod label keys to select the pods over which\\nspreading will be calculated. The keys are used to lookup values from the\\nincoming pod labels, those key-value labels are ANDed with labelSelector\\nto select the group of existing pods over which spreading will be calculated\\nfor the incoming pod. Keys that don't exist in the incoming pod labels will\\nbe ignored. A null or empty list means only match against labelSelector.\\n+listType=atomic\\n+optional\",\n" + + " \"type\": \"array\",\n" + + " \"items\": {\n" + + " \"type\": \"string\"\n" + + " },\n" + + " \"x-go-name\": \"MatchLabelKeys\"\n" + + " },\n" + " \"maxSkew\": {\n" + - " \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 1/1/0:\\n+-------+-------+-------+\\n zone1 | zone2 | zone3 |\\n+-------+-------+-------+\\n P | P | |\\n+-------+-------+-------+\\nif MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1;\\nscheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2)\\nviolate MaxSkew(1).\\nif MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n" + + " \"description\": \"MaxSkew describes the degree to which pods may be unevenly distributed.\\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\\nbetween the number of matching pods in the target topology and the global minimum.\\nThe global minimum is the minimum number of matching pods in an eligible domain\\nor zero if the number of eligible domains is less than MinDomains.\\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\\nlabelSelector spread as 2/2/1:\\nIn this case, the global minimum is 1.\\n+-------+-------+-------+\\n zone1 | zone2 | zone3 |\\n+-------+-------+-------+\\n P P | P P | P |\\n+-------+-------+-------+\\nif MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\\nviolate MaxSkew(1).\\nif MaxSkew is 2, incoming pod can be scheduled onto any zone.\\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\\nto topologies that satisfy it.\\nIt's a required field. Default value is 1 and 0 is not allowed.\",\n" + " \"type\": \"integer\",\n" + " \"format\": \"int32\",\n" + " \"x-go-name\": \"MaxSkew\"\n" + " },\n" + + " \"minDomains\": {\n" + + " \"description\": \"MinDomains indicates a minimum number of eligible domains.\\nWhen the number of eligible domains with matching topology keys is less than minDomains,\\nPod Topology Spread treats \\\"global minimum\\\" as 0, and then the calculation of Skew is performed.\\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\\nthis value has no effect on scheduling.\\nAs a result, when the number of eligible domains is less than minDomains,\\nscheduler won't schedule more than maxSkew Pods to those domains.\\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\\nValid values are integers greater than 0.\\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\\n\\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\\nlabelSelector spread as 2/2/2:\\n+-------+-------+-------+\\n zone1 | zone2 | zone3 |\\n+-------+-------+-------+\\n P P | P P | P P |\\n+-------+-------+-------+\\nThe number of domains is less than 5(MinDomains), so \\\"global minimum\\\" is treated as 0.\\nIn this situation, new pod with the same labelSelector cannot be scheduled,\\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\\nit will violate MaxSkew.\\n\\nThis is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default).\\n+optional\",\n" + + " \"type\": \"integer\",\n" + + " \"format\": \"int32\",\n" + + " \"x-go-name\": \"MinDomains\"\n" + + " },\n" + + " \"nodeAffinityPolicy\": {\n" + + " \"$ref\": \"#/definitions/v1NodeInclusionPolicy\"\n" + + " },\n" + + " \"nodeTaintsPolicy\": {\n" + + " \"$ref\": \"#/definitions/v1NodeInclusionPolicy\"\n" + + " },\n" + " \"topologyKey\": {\n" + - " \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nIt's a required field.\",\n" + + " \"description\": \"TopologyKey is the key of node labels. Nodes that have a label with this key\\nand identical values are considered to be in the same topology.\\nWe consider each \\u003ckey, value\\u003e as a \\\"bucket\\\", and try to put balanced number\\nof pods into each bucket.\\nWe define a domain as a particular instance of a topology.\\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\\nnodeAffinityPolicy and nodeTaintsPolicy.\\ne.g. If TopologyKey is \\\"kubernetes.io/hostname\\\", each Node is a domain of that topology.\\nAnd, if TopologyKey is \\\"topology.kubernetes.io/zone\\\", each zone is a domain of that topology.\\nIt's a required field.\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"TopologyKey\"\n" + " },\n" + @@ -5380,12 +5588,39 @@ func SwaggerJsonTemplate() string { " },\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + + " \"v1TypedObjectReference\": {\n" + + " \"type\": \"object\",\n" + + " \"properties\": {\n" + + " \"apiGroup\": {\n" + + " \"description\": \"APIGroup is the group for the resource being referenced.\\nIf APIGroup is not specified, the specified Kind must be in the core API group.\\nFor any other third-party types, APIGroup is required.\\n+optional\",\n" + + " \"type\": \"string\",\n" + + " \"x-go-name\": \"APIGroup\"\n" + + " },\n" + + " \"kind\": {\n" + + " \"description\": \"Kind is the type of resource being referenced\",\n" + + " \"type\": \"string\",\n" + + " \"x-go-name\": \"Kind\"\n" + + " },\n" + + " \"name\": {\n" + + " \"description\": \"Name is the name of resource being referenced\",\n" + + " \"type\": \"string\",\n" + + " \"x-go-name\": \"Name\"\n" + + " },\n" + + " \"namespace\": {\n" + + " \"description\": \"Namespace is the namespace of resource being referenced\\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\\n+featureGate=CrossNamespaceVolumeDataSource\\n+optional\",\n" + + " \"type\": \"string\",\n" + + " \"x-go-name\": \"Namespace\"\n" + + " }\n" + + " },\n" + + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + + " },\n" + " \"v1URIScheme\": {\n" + - " \"description\": \"URIScheme identifies the scheme used for connection to a host for Get actions\",\n" + + " \"description\": \"URIScheme identifies the scheme used for connection to a host for Get actions\\n+enum\",\n" + " \"type\": \"string\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + " \"v1UnsatisfiableConstraintAction\": {\n" + + " \"description\": \"+enum\",\n" + " \"type\": \"string\",\n" + " \"x-go-package\": \"k8s.io/api/core/v1\"\n" + " },\n" + @@ -5448,7 +5683,7 @@ func SwaggerJsonTemplate() string { " \"$ref\": \"#/definitions/v1ISCSIVolumeSource\"\n" + " },\n" + " \"name\": {\n" + - " \"description\": \"Volume's name.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n" + + " \"description\": \"name of the volume.\\nMust be a DNS_LABEL and unique within the pod.\\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"Name\"\n" + " },\n" + @@ -5564,22 +5799,22 @@ func SwaggerJsonTemplate() string { " \"title\": \"Represents a vSphere volume resource.\",\n" + " \"properties\": {\n" + " \"fsType\": {\n" + - " \"description\": \"Filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\n+optional\",\n" + + " \"description\": \"fsType is filesystem type to mount.\\nMust be a filesystem type supported by the host operating system.\\nEx. \\\"ext4\\\", \\\"xfs\\\", \\\"ntfs\\\". Implicitly inferred to be \\\"ext4\\\" if unspecified.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"FSType\"\n" + " },\n" + " \"storagePolicyID\": {\n" + - " \"description\": \"Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\\n+optional\",\n" + + " \"description\": \"storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"StoragePolicyID\"\n" + " },\n" + " \"storagePolicyName\": {\n" + - " \"description\": \"Storage Policy Based Management (SPBM) profile name.\\n+optional\",\n" + + " \"description\": \"storagePolicyName is the storage Policy Based Management (SPBM) profile name.\\n+optional\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"StoragePolicyName\"\n" + " },\n" + " \"volumePath\": {\n" + - " \"description\": \"Path that identifies vSphere volume vmdk\",\n" + + " \"description\": \"volumePath is the path that identifies vSphere volume vmdk\",\n" + " \"type\": \"string\",\n" + " \"x-go-name\": \"VolumePath\"\n" + " }\n" + diff --git a/pkg/api/api.swagger.json b/pkg/api/api.swagger.json index c549d2b5681..7aea59098b1 100644 --- a/pkg/api/api.swagger.json +++ b/pkg/api/api.swagger.json @@ -2056,7 +2056,7 @@ } }, "resourceQuantity": { - "description": "The serialization format is:\n\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n(Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\u003cdigit\u003e ::= 0 | 1 | ... | 9\n\u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e\n\u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e\n\u003csign\u003e ::= \"+\" | \"-\"\n\u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e\n\u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e\n\u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n\nNo matter which of the three exponent forms is used, no quantity may represent\na number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal\nplaces. Numbers larger or more precise will be capped or rounded up.\n(E.g.: 0.1m will rounded up to 1m.)\nThis may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix\nit had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\".\nThis means that Exponent/suffix will be adjusted up or down (with a\ncorresponding increase or decrease in Mantissa) such that:\na. No precision is lost\nb. No fractional digits will be emitted\nc. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n1.5 will be serialized as \"1500m\"\n1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a\nfloating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed,\nbut will be re-emitted in their canonical form. (So always use canonical\nform, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without\nwriting some sort of special handling code in the hopes that that will\ncause implementors to also use a fixed point implementation.\n\n+protobuf=true\n+protobuf.embed=string\n+protobuf.options.marshal=false\n+protobuf.options.(gogoproto.goproto_stringer)=false\n+k8s:deepcopy-gen=true\n+k8s:openapi-gen=true", + "description": "The serialization format is:\n\n```\n\u003cquantity\u003e ::= \u003csignedNumber\u003e\u003csuffix\u003e\n\n(Note that \u003csuffix\u003e may be empty, from the \"\" case in \u003cdecimalSI\u003e.)\n\n\u003cdigit\u003e ::= 0 | 1 | ... | 9\n\u003cdigits\u003e ::= \u003cdigit\u003e | \u003cdigit\u003e\u003cdigits\u003e\n\u003cnumber\u003e ::= \u003cdigits\u003e | \u003cdigits\u003e.\u003cdigits\u003e | \u003cdigits\u003e. | .\u003cdigits\u003e\n\u003csign\u003e ::= \"+\" | \"-\"\n\u003csignedNumber\u003e ::= \u003cnumber\u003e | \u003csign\u003e\u003cnumber\u003e\n\u003csuffix\u003e ::= \u003cbinarySI\u003e | \u003cdecimalExponent\u003e | \u003cdecimalSI\u003e\n\u003cbinarySI\u003e ::= Ki | Mi | Gi | Ti | Pi | Ei\n\n(International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n\n\u003cdecimalSI\u003e ::= m | \"\" | k | M | G | T | P | E\n\n(Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n\n\u003cdecimalExponent\u003e ::= \"e\" \u003csignedNumber\u003e | \"E\" \u003csignedNumber\u003e\n```\n\nNo matter which of the three exponent forms is used, no quantity may represent\na number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal\nplaces. Numbers larger or more precise will be capped or rounded up.\n(E.g.: 0.1m will rounded up to 1m.)\nThis may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix\nit had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\".\nThis means that Exponent/suffix will be adjusted up or down (with a\ncorresponding increase or decrease in Mantissa) such that:\n\nNo precision is lost\nNo fractional digits will be emitted\nThe exponent (or suffix) is as large as possible.\n\nThe sign will be omitted unless the number is negative.\n\nExamples:\n\n1.5 will be serialized as \"1500m\"\n1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a\nfloating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed,\nbut will be re-emitted in their canonical form. (So always use canonical\nform, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without\nwriting some sort of special handling code in the hopes that that will\ncause implementors to also use a fixed point implementation.\n\n+protobuf=true\n+protobuf.embed=string\n+protobuf.options.marshal=false\n+protobuf.options.(gogoproto.goproto_stringer)=false\n+k8s:deepcopy-gen=true\n+k8s:openapi-gen=true", "type": "string", "title": "Quantity is a fixed-point representation of a number.\nIt provides convenient marshaling/unmarshaling in JSON and YAML,\nin addition to String() and AsInt64() accessors.", "x-go-package": "k8s.io/apimachinery/pkg/api/resource" @@ -2118,23 +2118,23 @@ "title": "Represents a Persistent Disk resource in AWS.", "properties": { "fsType": { - "description": "Filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\nTODO: how do we prevent errors in the filesystem from compromising the machine\n+optional", + "description": "fsType is the filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\nTODO: how do we prevent errors in the filesystem from compromising the machine\n+optional", "type": "string", "x-go-name": "FSType" }, "partition": { - "description": "The partition in the volume that you want to mount.\nIf omitted, the default is to mount by volume name.\nExamples: For volume /dev/sda1, you specify the partition as \"1\".\nSimilarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).\n+optional", + "description": "partition is the partition in the volume that you want to mount.\nIf omitted, the default is to mount by volume name.\nExamples: For volume /dev/sda1, you specify the partition as \"1\".\nSimilarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).\n+optional", "type": "integer", "format": "int32", "x-go-name": "Partition" }, "readOnly": { - "description": "Specify \"true\" to force and set the ReadOnly property in VolumeMounts to \"true\".\nIf omitted, the default is \"false\".\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n+optional", + "description": "readOnly value true will force the readOnly setting in VolumeMounts.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\n+optional", "type": "boolean", "x-go-name": "ReadOnly" }, "volumeID": { - "description": "Unique ID of the persistent disk resource in AWS (Amazon EBS volume).\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", + "description": "volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore", "type": "string", "x-go-name": "VolumeID" } @@ -2158,10 +2158,12 @@ "x-go-package": "k8s.io/api/core/v1" }, "v1AzureDataDiskCachingMode": { + "description": "+enum", "type": "string", "x-go-package": "k8s.io/api/core/v1" }, "v1AzureDataDiskKind": { + "description": "+enum", "type": "string", "x-go-package": "k8s.io/api/core/v1" }, @@ -2173,17 +2175,17 @@ "$ref": "#/definitions/v1AzureDataDiskCachingMode" }, "diskName": { - "description": "The Name of the data disk in the blob storage", + "description": "diskName is the Name of the data disk in the blob storage", "type": "string", "x-go-name": "DiskName" }, "diskURI": { - "description": "The URI the data disk in the blob storage", + "description": "diskURI is the URI of data disk in the blob storage", "type": "string", "x-go-name": "DataDiskURI" }, "fsType": { - "description": "Filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n+optional", + "description": "fsType is Filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n+optional", "type": "string", "x-go-name": "FSType" }, @@ -2191,7 +2193,7 @@ "$ref": "#/definitions/v1AzureDataDiskKind" }, "readOnly": { - "description": "Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\n+optional", + "description": "readOnly Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\n+optional", "type": "boolean", "x-go-name": "ReadOnly" } @@ -2203,17 +2205,17 @@ "title": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", "properties": { "readOnly": { - "description": "Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\n+optional", + "description": "readOnly defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\n+optional", "type": "boolean", "x-go-name": "ReadOnly" }, "secretName": { - "description": "the name of secret that contains Azure Storage Account Name and Key", + "description": "secretName is the name of secret that contains Azure Storage Account Name and Key", "type": "string", "x-go-name": "SecretName" }, "shareName": { - "description": "Share Name", + "description": "shareName is the azure share Name", "type": "string", "x-go-name": "ShareName" } @@ -2225,12 +2227,12 @@ "type": "object", "properties": { "driver": { - "description": "Driver is the name of the CSI driver that handles this volume.\nConsult with your admin for the correct name as registered in the cluster.", + "description": "driver is the name of the CSI driver that handles this volume.\nConsult with your admin for the correct name as registered in the cluster.", "type": "string", "x-go-name": "Driver" }, "fsType": { - "description": "Filesystem type to mount. Ex. \"ext4\", \"xfs\", \"ntfs\".\nIf not provided, the empty value is passed to the associated CSI driver\nwhich will determine the default filesystem to apply.\n+optional", + "description": "fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\".\nIf not provided, the empty value is passed to the associated CSI driver\nwhich will determine the default filesystem to apply.\n+optional", "type": "string", "x-go-name": "FSType" }, @@ -2238,12 +2240,12 @@ "$ref": "#/definitions/v1LocalObjectReference" }, "readOnly": { - "description": "Specifies a read-only configuration for the volume.\nDefaults to false (read/write).\n+optional", + "description": "readOnly specifies a read-only configuration for the volume.\nDefaults to false (read/write).\n+optional", "type": "boolean", "x-go-name": "ReadOnly" }, "volumeAttributes": { - "description": "VolumeAttributes stores driver-specific properties that are passed to the CSI\ndriver. Consult your driver's documentation for supported values.\n+optional", + "description": "volumeAttributes stores driver-specific properties that are passed to the CSI\ndriver. Consult your driver's documentation for supported values.\n+optional", "type": "object", "additionalProperties": { "type": "string" @@ -2286,7 +2288,7 @@ "type": "object", "properties": { "monitors": { - "description": "Required: Monitors is a collection of Ceph monitors\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", + "description": "monitors is Required: Monitors is a collection of Ceph monitors\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it", "type": "array", "items": { "type": "string" @@ -2294,17 +2296,17 @@ "x-go-name": "Monitors" }, "path": { - "description": "Optional: Used as the mounted root, rather than the full Ceph tree, default is /\n+optional", + "description": "path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /\n+optional", "type": "string", "x-go-name": "Path" }, "readOnly": { - "description": "Optional: Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n+optional", + "description": "readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n+optional", "type": "boolean", "x-go-name": "ReadOnly" }, "secretFile": { - "description": "Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n+optional", + "description": "secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n+optional", "type": "string", "x-go-name": "SecretFile" }, @@ -2312,7 +2314,7 @@ "$ref": "#/definitions/v1LocalObjectReference" }, "user": { - "description": "Optional: User is the rados user name, default is admin\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n+optional", + "description": "user is optional: User is the rados user name, default is admin\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it\n+optional", "type": "string", "x-go-name": "User" } @@ -2325,12 +2327,12 @@ "title": "Represents a cinder volume resource in Openstack.", "properties": { "fsType": { - "description": "Filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\n+optional", + "description": "fsType is the filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\n+optional", "type": "string", "x-go-name": "FSType" }, "readOnly": { - "description": "Optional: Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\n+optional", + "description": "readOnly defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md\n+optional", "type": "boolean", "x-go-name": "ReadOnly" }, @@ -2338,13 +2340,31 @@ "$ref": "#/definitions/v1LocalObjectReference" }, "volumeID": { - "description": "volume id used to identify the volume in cinder.\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md", + "description": "volumeID used to identify the volume in cinder.\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md", "type": "string", "x-go-name": "VolumeID" } }, "x-go-package": "k8s.io/api/core/v1" }, + "v1ClaimSource": { + "description": "Exactly one of these fields should be set. Consumers of this type must\ntreat an empty object as if it has an unknown value.", + "type": "object", + "title": "ClaimSource describes a reference to a ResourceClaim.", + "properties": { + "resourceClaimName": { + "description": "ResourceClaimName is the name of a ResourceClaim object in the same\nnamespace as this pod.", + "type": "string", + "x-go-name": "ResourceClaimName" + }, + "resourceClaimTemplateName": { + "description": "ResourceClaimTemplateName is the name of a ResourceClaimTemplate\nobject in the same namespace as this pod.\n\nThe template will be used to create a new ResourceClaim, which will\nbe bound to this pod. When this pod is deleted, the ResourceClaim\nwill also be deleted. The name of the ResourceClaim will be \u003cpod\nname\u003e-\u003cresource name\u003e, where \u003cresource name\u003e is the\nPodResourceClaim.Name. Pod validation will reject the pod if the\nconcatenated name is not valid for a ResourceClaim (e.g. too long).\n\nAn existing ResourceClaim with that name that is not owned by the\npod will not be used for the pod to avoid using an unrelated\nresource by mistake. Scheduling and pod startup are then blocked\nuntil the unrelated ResourceClaim is removed.\n\nThis field is immutable and no changes will be made to the\ncorresponding ResourceClaim by the control plane after creating the\nResourceClaim.", + "type": "string", + "x-go-name": "ResourceClaimTemplateName" + } + }, + "x-go-package": "k8s.io/api/core/v1" + }, "v1ClientIPConfig": { "description": "ClientIPConfig represents the configurations of Client IP based session affinity.", "type": "object", @@ -2357,9 +2377,9 @@ } }, "v1Condition": { - "description": "// other fields\n}", + "description": "type FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\t // other fields\n\t}", "type": "object", - "title": "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\ntype FooStatus struct{\n // Represents the observations of a foo's current state.\n // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n // +patchMergeKey=type\n // +patchStrategy=merge\n // +listType=map\n // +listMapKey=type\n Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`", + "title": "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,", "properties": { "lastTransitionTime": { "title": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.\n+required\n+kubebuilder:validation:Required\n+kubebuilder:validation:Type=string\n+kubebuilder:validation:Format=date-time", @@ -2435,7 +2455,7 @@ "title": "Adapts a ConfigMap into a projected volume.", "properties": { "items": { - "description": "If unspecified, each key-value pair in the Data field of the referenced\nConfigMap will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the ConfigMap,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'.\n+optional", + "description": "items if unspecified, each key-value pair in the Data field of the referenced\nConfigMap will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the ConfigMap,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'.\n+optional", "type": "array", "items": { "$ref": "#/definitions/v1KeyToPath" @@ -2448,7 +2468,7 @@ "x-go-name": "Name" }, "optional": { - "description": "Specify whether the ConfigMap or its keys must be defined\n+optional", + "description": "optional specify whether the ConfigMap or its keys must be defined\n+optional", "type": "boolean", "x-go-name": "Optional" } @@ -2461,13 +2481,13 @@ "title": "Adapts a ConfigMap into a volume.", "properties": { "defaultMode": { - "description": "Optional: mode bits used to set permissions on created files by default.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\nDefaults to 0644.\nDirectories within the path are not affected by this setting.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set.\n+optional", + "description": "defaultMode is optional: mode bits used to set permissions on created files by default.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\nDefaults to 0644.\nDirectories within the path are not affected by this setting.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set.\n+optional", "type": "integer", "format": "int32", "x-go-name": "DefaultMode" }, "items": { - "description": "If unspecified, each key-value pair in the Data field of the referenced\nConfigMap will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the ConfigMap,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'.\n+optional", + "description": "items if unspecified, each key-value pair in the Data field of the referenced\nConfigMap will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the ConfigMap,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'.\n+optional", "type": "array", "items": { "$ref": "#/definitions/v1KeyToPath" @@ -2480,7 +2500,7 @@ "x-go-name": "Name" }, "optional": { - "description": "Specify whether the ConfigMap or its keys must be defined\n+optional", + "description": "optional specify whether the ConfigMap or its keys must be defined\n+optional", "type": "boolean", "x-go-name": "Optional" } @@ -2492,7 +2512,7 @@ "title": "A single application container that you want to run within a pod.", "properties": { "args": { - "description": "Arguments to the entrypoint.\nThe docker image's CMD is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n+optional", + "description": "Arguments to the entrypoint.\nThe container image's CMD is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n+optional", "type": "array", "items": { "type": "string" @@ -2500,7 +2520,7 @@ "x-go-name": "Args" }, "command": { - "description": "Entrypoint array. Not executed within a shell.\nThe docker image's ENTRYPOINT is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n+optional", + "description": "Entrypoint array. Not executed within a shell.\nThe container image's ENTRYPOINT is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n+optional", "type": "array", "items": { "type": "string" @@ -2524,7 +2544,7 @@ "x-go-name": "EnvFrom" }, "image": { - "description": "Docker image name.\nMore info: https://kubernetes.io/docs/concepts/containers/images\nThis field is optional to allow higher level config management to default or override\ncontainer images in workload controllers like Deployments and StatefulSets.\n+optional", + "description": "Container image name.\nMore info: https://kubernetes.io/docs/concepts/containers/images\nThis field is optional to allow higher level config management to default or override\ncontainer images in workload controllers like Deployments and StatefulSets.\n+optional", "type": "string", "x-go-name": "Image" }, @@ -2543,7 +2563,7 @@ "x-go-name": "Name" }, "ports": { - "description": "List of ports to expose from the container. Exposing a port here gives\nthe system additional information about the network connections a\ncontainer uses, but is primarily informational. Not specifying a port here\nDOES NOT prevent that port from being exposed. Any port which is\nlistening on the default \"0.0.0.0\" address inside a container will be\naccessible from the network.\nCannot be updated.\n+optional\n+patchMergeKey=containerPort\n+patchStrategy=merge\n+listType=map\n+listMapKey=containerPort\n+listMapKey=protocol", + "description": "List of ports to expose from the container. Not specifying a port here\nDOES NOT prevent that port from being exposed. Any port which is\nlistening on the default \"0.0.0.0\" address inside a container will be\naccessible from the network.\nModifying this array with strategic merge patch may corrupt the data.\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\nCannot be updated.\n+optional\n+patchMergeKey=containerPort\n+patchStrategy=merge\n+listType=map\n+listMapKey=containerPort\n+listMapKey=protocol", "type": "array", "items": { "$ref": "#/definitions/v1ContainerPort" @@ -2642,6 +2662,7 @@ "x-go-package": "k8s.io/api/core/v1" }, "v1DNSPolicy": { + "description": "+enum", "type": "string", "title": "DNSPolicy defines how a pod's DNS will be configured.", "x-go-package": "k8s.io/api/core/v1" @@ -2780,11 +2801,12 @@ "x-go-package": "k8s.io/api/core/v1" }, "v1EphemeralContainer": { - "description": "An EphemeralContainer is a container that may be added temporarily to an existing pod for\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\nscheduling guarantees, and they will not be restarted when they exit or when a pod is\nremoved or restarted. If an ephemeral container causes a pod to exceed its resource\nallocation, the pod may be evicted.\nEphemeral containers may not be added by directly updating the pod spec. They must be added\nvia the pod's ephemeralcontainers subresource, and they will appear in the pod spec\nonce added.\nThis is an alpha feature enabled by the EphemeralContainers feature flag.", + "description": "To add an ephemeral container, use the ephemeralcontainers subresource of an existing\nPod. Ephemeral containers may not be removed or restarted.", "type": "object", + "title": "An EphemeralContainer is a temporary container that you may add to an existing Pod for\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\nPod to exceed its resource allocation.", "properties": { "args": { - "description": "Arguments to the entrypoint.\nThe docker image's CMD is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n+optional", + "description": "Arguments to the entrypoint.\nThe image's CMD is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n+optional", "type": "array", "items": { "type": "string" @@ -2792,7 +2814,7 @@ "x-go-name": "Args" }, "command": { - "description": "Entrypoint array. Not executed within a shell.\nThe docker image's ENTRYPOINT is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n+optional", + "description": "Entrypoint array. Not executed within a shell.\nThe image's ENTRYPOINT is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell\n+optional", "type": "array", "items": { "type": "string" @@ -2816,7 +2838,7 @@ "x-go-name": "EnvFrom" }, "image": { - "description": "Docker image name.\nMore info: https://kubernetes.io/docs/concepts/containers/images", + "description": "Container image name.\nMore info: https://kubernetes.io/docs/concepts/containers/images", "type": "string", "x-go-name": "Image" }, @@ -2835,7 +2857,7 @@ "x-go-name": "Name" }, "ports": { - "description": "Ports are not allowed for ephemeral containers.", + "description": "Ports are not allowed for ephemeral containers.\n+optional\n+patchMergeKey=containerPort\n+patchStrategy=merge\n+listType=map\n+listMapKey=containerPort\n+listMapKey=protocol", "type": "array", "items": { "$ref": "#/definitions/v1ContainerPort" @@ -2865,7 +2887,7 @@ "x-go-name": "StdinOnce" }, "targetContainerName": { - "description": "If set, the name of the container from PodSpec that this ephemeral container targets.\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\nIf not set then the ephemeral container is run in whatever namespaces are shared\nfor the pod. Note that the container runtime must support this feature.\n+optional", + "description": "If set, the name of the container from PodSpec that this ephemeral container targets.\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\n\nThe container runtime must implement support for this feature. If the runtime does not\nsupport namespace targeting then the result of setting this field is undefined.\n+optional", "type": "string", "x-go-name": "TargetContainerName" }, @@ -2891,7 +2913,7 @@ "x-go-name": "VolumeDevices" }, "volumeMounts": { - "description": "Pod volumes to mount into the container's filesystem.\nCannot be updated.\n+optional\n+patchMergeKey=mountPath\n+patchStrategy=merge", + "description": "Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\nCannot be updated.\n+optional\n+patchMergeKey=mountPath\n+patchStrategy=merge", "type": "array", "items": { "$ref": "#/definitions/v1VolumeMount" @@ -2937,23 +2959,23 @@ "title": "Represents a Fibre Channel volume.", "properties": { "fsType": { - "description": "Filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nTODO: how do we prevent errors in the filesystem from compromising the machine\n+optional", + "description": "fsType is the filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nTODO: how do we prevent errors in the filesystem from compromising the machine\n+optional", "type": "string", "x-go-name": "FSType" }, "lun": { - "description": "Optional: FC target lun number\n+optional", + "description": "lun is Optional: FC target lun number\n+optional", "type": "integer", "format": "int32", "x-go-name": "Lun" }, "readOnly": { - "description": "Optional: Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\n+optional", + "description": "readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\n+optional", "type": "boolean", "x-go-name": "ReadOnly" }, "targetWWNs": { - "description": "Optional: FC target worldwide names (WWNs)\n+optional", + "description": "targetWWNs is Optional: FC target worldwide names (WWNs)\n+optional", "type": "array", "items": { "type": "string" @@ -2961,7 +2983,7 @@ "x-go-name": "TargetWWNs" }, "wwids": { - "description": "Optional: FC volume world wide identifiers (wwids)\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n+optional", + "description": "wwids Optional: FC volume world wide identifiers (wwids)\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously.\n+optional", "type": "array", "items": { "type": "string" @@ -2982,17 +3004,17 @@ "type": "object", "properties": { "driver": { - "description": "Driver is the name of the driver to use for this volume.", + "description": "driver is the name of the driver to use for this volume.", "type": "string", "x-go-name": "Driver" }, "fsType": { - "description": "Filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.\n+optional", + "description": "fsType is the filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script.\n+optional", "type": "string", "x-go-name": "FSType" }, "options": { - "description": "Optional: Extra command options if any.\n+optional", + "description": "options is Optional: this field holds extra command options if any.\n+optional", "type": "object", "additionalProperties": { "type": "string" @@ -3000,7 +3022,7 @@ "x-go-name": "Options" }, "readOnly": { - "description": "Optional: Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\n+optional", + "description": "readOnly is Optional: defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\n+optional", "type": "boolean", "x-go-name": "ReadOnly" }, @@ -3016,12 +3038,12 @@ "title": "Represents a Flocker volume mounted by the Flocker agent.", "properties": { "datasetName": { - "description": "Name of the dataset stored as metadata -\u003e name on the dataset for Flocker\nshould be considered as deprecated\n+optional", + "description": "datasetName is Name of the dataset stored as metadata -\u003e name on the dataset for Flocker\nshould be considered as deprecated\n+optional", "type": "string", "x-go-name": "DatasetName" }, "datasetUUID": { - "description": "UUID of the dataset. This is unique identifier of a Flocker dataset\n+optional", + "description": "datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset\n+optional", "type": "string", "x-go-name": "DatasetUUID" } @@ -3034,46 +3056,63 @@ "title": "Represents a Persistent Disk resource in Google Compute Engine.", "properties": { "fsType": { - "description": "Filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\nTODO: how do we prevent errors in the filesystem from compromising the machine\n+optional", + "description": "fsType is filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\nTODO: how do we prevent errors in the filesystem from compromising the machine\n+optional", "type": "string", "x-go-name": "FSType" }, "partition": { - "description": "The partition in the volume that you want to mount.\nIf omitted, the default is to mount by volume name.\nExamples: For volume /dev/sda1, you specify the partition as \"1\".\nSimilarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n+optional", + "description": "partition is the partition in the volume that you want to mount.\nIf omitted, the default is to mount by volume name.\nExamples: For volume /dev/sda1, you specify the partition as \"1\".\nSimilarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n+optional", "type": "integer", "format": "int32", "x-go-name": "Partition" }, "pdName": { - "description": "Unique name of the PD resource in GCE. Used to identify the disk in GCE.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", + "description": "pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk", "type": "string", "x-go-name": "PDName" }, "readOnly": { - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts.\nDefaults to false.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n+optional", + "description": "readOnly here will force the ReadOnly setting in VolumeMounts.\nDefaults to false.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\n+optional", "type": "boolean", "x-go-name": "ReadOnly" } }, "x-go-package": "k8s.io/api/core/v1" }, + "v1GRPCAction": { + "type": "object", + "properties": { + "port": { + "description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", + "type": "integer", + "format": "int32", + "x-go-name": "Port" + }, + "service": { + "description": "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC.\n+optional\n+default=\"\"", + "type": "string", + "x-go-name": "Service" + } + }, + "x-go-package": "k8s.io/api/core/v1" + }, "v1GitRepoVolumeSource": { "description": "DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\ninto the Pod's container.", "type": "object", "title": "Represents a volume that is populated with the contents of a git repository.\nGit repo volumes do not support ownership management.\nGit repo volumes support SELinux relabeling.", "properties": { "directory": { - "description": "Target directory name.\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\ngit repository. Otherwise, if specified, the volume will contain the git repository in\nthe subdirectory with the given name.\n+optional", + "description": "directory is the target directory name.\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\ngit repository. Otherwise, if specified, the volume will contain the git repository in\nthe subdirectory with the given name.\n+optional", "type": "string", "x-go-name": "Directory" }, "repository": { - "description": "Repository URL", + "description": "repository is the URL", "type": "string", "x-go-name": "Repository" }, "revision": { - "description": "Commit hash for the specified revision.\n+optional", + "description": "revision is the commit hash for the specified revision.\n+optional", "type": "string", "x-go-name": "Revision" } @@ -3086,17 +3125,17 @@ "title": "Represents a Glusterfs mount that lasts the lifetime of a pod.", "properties": { "endpoints": { - "description": "EndpointsName is the endpoint name that details Glusterfs topology.\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", + "description": "endpoints is the endpoint name that details Glusterfs topology.\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", "type": "string", "x-go-name": "EndpointsName" }, "path": { - "description": "Path is the Glusterfs volume path.\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", + "description": "path is the Glusterfs volume path.\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", "type": "string", "x-go-name": "Path" }, "readOnly": { - "description": "ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions.\nDefaults to false.\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n+optional", + "description": "readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\nDefaults to false.\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod\n+optional", "type": "boolean", "x-go-name": "ReadOnly" } @@ -3139,7 +3178,7 @@ "type": "object", "properties": { "name": { - "description": "The header field name", + "description": "The header field name.\nThis will be canonicalized upon output, so case-variant names will be understood as the same header.", "type": "string", "x-go-name": "Name" }, @@ -3182,22 +3221,6 @@ } } }, - "v1Handler": { - "description": "Handler defines a specific action that should be taken\nTODO: pass structured data to these actions, and document that data here.", - "type": "object", - "properties": { - "exec": { - "$ref": "#/definitions/v1ExecAction" - }, - "httpGet": { - "$ref": "#/definitions/v1HTTPGetAction" - }, - "tcpSocket": { - "$ref": "#/definitions/v1TCPSocketAction" - } - }, - "x-go-package": "k8s.io/api/core/v1" - }, "v1HostAlias": { "description": "HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\npod's hosts file.", "type": "object", @@ -3219,6 +3242,7 @@ "x-go-package": "k8s.io/api/core/v1" }, "v1HostPathType": { + "description": "+enum", "type": "string", "x-go-package": "k8s.io/api/core/v1" }, @@ -3228,7 +3252,7 @@ "title": "Represents a host path mapped into a pod.", "properties": { "path": { - "description": "Path of the directory on the host.\nIf the path is a symlink, it will follow the link to the real path.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", + "description": "path of the directory on the host.\nIf the path is a symlink, it will follow the link to the real path.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", "type": "string", "x-go-name": "Path" }, @@ -3244,43 +3268,43 @@ "title": "Represents an ISCSI disk.", "properties": { "chapAuthDiscovery": { - "description": "whether support iSCSI Discovery CHAP authentication\n+optional", + "description": "chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication\n+optional", "type": "boolean", "x-go-name": "DiscoveryCHAPAuth" }, "chapAuthSession": { - "description": "whether support iSCSI Session CHAP authentication\n+optional", + "description": "chapAuthSession defines whether support iSCSI Session CHAP authentication\n+optional", "type": "boolean", "x-go-name": "SessionCHAPAuth" }, "fsType": { - "description": "Filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\nTODO: how do we prevent errors in the filesystem from compromising the machine\n+optional", + "description": "fsType is the filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\nTODO: how do we prevent errors in the filesystem from compromising the machine\n+optional", "type": "string", "x-go-name": "FSType" }, "initiatorName": { - "description": "Custom iSCSI Initiator Name.\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\n\u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.\n+optional", + "description": "initiatorName is the custom iSCSI Initiator Name.\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\n\u003ctarget portal\u003e:\u003cvolume name\u003e will be created for the connection.\n+optional", "type": "string", "x-go-name": "InitiatorName" }, "iqn": { - "description": "Target iSCSI Qualified Name.", + "description": "iqn is the target iSCSI Qualified Name.", "type": "string", "x-go-name": "IQN" }, "iscsiInterface": { - "description": "iSCSI Interface Name that uses an iSCSI transport.\nDefaults to 'default' (tcp).\n+optional", + "description": "iscsiInterface is the interface Name that uses an iSCSI transport.\nDefaults to 'default' (tcp).\n+optional", "type": "string", "x-go-name": "ISCSIInterface" }, "lun": { - "description": "iSCSI Target Lun number.", + "description": "lun represents iSCSI Target Lun number.", "type": "integer", "format": "int32", "x-go-name": "Lun" }, "portals": { - "description": "iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\nis other than default (typically TCP ports 860 and 3260).\n+optional", + "description": "portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\nis other than default (typically TCP ports 860 and 3260).\n+optional", "type": "array", "items": { "type": "string" @@ -3288,7 +3312,7 @@ "x-go-name": "Portals" }, "readOnly": { - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts.\nDefaults to false.\n+optional", + "description": "readOnly here will force the ReadOnly setting in VolumeMounts.\nDefaults to false.\n+optional", "type": "boolean", "x-go-name": "ReadOnly" }, @@ -3296,7 +3320,7 @@ "$ref": "#/definitions/v1LocalObjectReference" }, "targetPortal": { - "description": "iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\nis other than default (typically TCP ports 860 and 3260).", + "description": "targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\nis other than default (typically TCP ports 860 and 3260).", "type": "string", "x-go-name": "TargetPortal" } @@ -3335,6 +3359,59 @@ } } }, + "v1IngressLoadBalancerIngress": { + "description": "IngressLoadBalancerIngress represents the status of a load-balancer ingress point.", + "type": "object", + "properties": { + "hostname": { + "type": "string", + "title": "Hostname is set for load-balancer ingress points that are DNS based.\n+optional" + }, + "ip": { + "type": "string", + "title": "IP is set for load-balancer ingress points that are IP based.\n+optional" + }, + "ports": { + "type": "array", + "title": "Ports provides information about the ports exposed by this LoadBalancer.\n+listType=atomic\n+optional", + "items": { + "$ref": "#/definitions/v1IngressPortStatus" + } + } + } + }, + "v1IngressLoadBalancerStatus": { + "description": "IngressLoadBalancerStatus represents the status of a load-balancer.", + "type": "object", + "properties": { + "ingress": { + "type": "array", + "title": "Ingress is a list containing ingress points for the load-balancer.\n+optional", + "items": { + "$ref": "#/definitions/v1IngressLoadBalancerIngress" + } + } + } + }, + "v1IngressPortStatus": { + "type": "object", + "title": "IngressPortStatus represents the error condition of a service port", + "properties": { + "error": { + "type": "string", + "title": "Error is to record the problem with the service port\nThe format of the error shall comply with the following rules:\n- built-in error values shall be specified in this file and those shall use\n CamelCase names\n- cloud provider specific error values must have names that comply with the\n format foo.example.com/CamelCase.\n---\nThe regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)\n+optional\n+kubebuilder:validation:Required\n+kubebuilder:validation:Pattern=`^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$`\n+kubebuilder:validation:MaxLength=316" + }, + "port": { + "description": "Port is the port number of the ingress port.", + "type": "integer", + "format": "int32" + }, + "protocol": { + "type": "string", + "title": "Protocol is the protocol of the ingress port.\nThe supported values are: \"TCP\", \"UDP\", \"SCTP\"" + } + } + }, "v1IngressRule": { "description": "IngressRule represents the rules mapping the paths under a specified host to\nthe related backend services. Incoming requests are first evaluated for a host\nmatch, then routed to the backend associated with the matching IngressRuleValue.", "type": "object", @@ -3383,7 +3460,7 @@ }, "ingressClassName": { "type": "string", - "title": "IngressClassName is the name of the IngressClass cluster resource. The\nassociated IngressClass defines which controller will implement the\nresource. This replaces the deprecated `kubernetes.io/ingress.class`\nannotation. For backwards compatibility, when that annotation is set, it\nmust be given precedence over this field. The controller may emit a\nwarning if the field and annotation have different values.\nImplementations of this API should ignore Ingresses without a class\nspecified. An IngressClass resource may be marked as default, which can\nbe used to set a default value for this field. For more information,\nrefer to the IngressClass documentation.\n+optional" + "title": "IngressClassName is the name of an IngressClass cluster resource. Ingress\ncontroller implementations use this field to know whether they should be\nserving this Ingress resource, by a transitive connection\n(controller -\u003e IngressClass -\u003e Ingress resource). Although the\n`kubernetes.io/ingress.class` annotation (simple constant name) was never\nformally defined, it was widely supported by Ingress controllers to create\na direct binding between Ingress controller and Ingress resources. Newly\ncreated Ingress resources should prefer using the field. However, even\nthough the annotation is officially deprecated, for backwards compatibility\nreasons, ingress controllers should still honor that annotation if present.\n+optional" }, "rules": { "type": "array", @@ -3407,7 +3484,7 @@ "properties": { "loadBalancer": { "title": "LoadBalancer contains the current status of the load-balancer.\n+optional", - "$ref": "#/definitions/v1LoadBalancerStatus" + "$ref": "#/definitions/v1IngressLoadBalancerStatus" } } }, @@ -3433,18 +3510,18 @@ "title": "Maps a string key to a path within a volume.", "properties": { "key": { - "description": "The key to project.", + "description": "key is the key to project.", "type": "string", "x-go-name": "Key" }, "mode": { - "description": "Optional: mode bits used to set permissions on this file.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\nIf not specified, the volume defaultMode will be used.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set.\n+optional", + "description": "mode is Optional: mode bits used to set permissions on this file.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\nIf not specified, the volume defaultMode will be used.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set.\n+optional", "type": "integer", "format": "int32", "x-go-name": "Mode" }, "path": { - "description": "The relative path of the file to map the key to.\nMay not be an absolute path.\nMay not contain the path element '..'.\nMay not start with the string '..'.", + "description": "path is the relative path of the file to map the key to.\nMay not be an absolute path.\nMay not contain the path element '..'.\nMay not start with the string '..'.", "type": "string", "x-go-name": "Path" } @@ -3507,10 +3584,26 @@ "type": "object", "properties": { "postStart": { - "$ref": "#/definitions/v1Handler" + "$ref": "#/definitions/v1LifecycleHandler" }, "preStop": { - "$ref": "#/definitions/v1Handler" + "$ref": "#/definitions/v1LifecycleHandler" + } + }, + "x-go-package": "k8s.io/api/core/v1" + }, + "v1LifecycleHandler": { + "description": "LifecycleHandler defines a specific action that should be taken in a lifecycle\nhook. One and only one of the fields, except TCPSocket must be specified.", + "type": "object", + "properties": { + "exec": { + "$ref": "#/definitions/v1ExecAction" + }, + "httpGet": { + "$ref": "#/definitions/v1HTTPGetAction" + }, + "tcpSocket": { + "$ref": "#/definitions/v1TCPSocketAction" } }, "x-go-package": "k8s.io/api/core/v1" @@ -3603,6 +3696,7 @@ "x-go-package": "k8s.io/apimachinery/pkg/apis/meta/v1" }, "v1MountPropagationMode": { + "description": "+enum", "type": "string", "title": "MountPropagationMode describes mount propagation.", "x-go-package": "k8s.io/api/core/v1" @@ -3613,17 +3707,17 @@ "title": "Represents an NFS mount that lasts the lifetime of a pod.", "properties": { "path": { - "description": "Path that is exported by the NFS server.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", + "description": "path that is exported by the NFS server.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "type": "string", "x-go-name": "Path" }, "readOnly": { - "description": "ReadOnly here will force\nthe NFS export to be mounted with read-only permissions.\nDefaults to false.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n+optional", + "description": "readOnly here will force the NFS export to be mounted with read-only permissions.\nDefaults to false.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs\n+optional", "type": "boolean", "x-go-name": "ReadOnly" }, "server": { - "description": "Server is the hostname or IP address of the NFS server.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", + "description": "server is the hostname or IP address of the NFS server.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", "type": "string", "x-go-name": "Server" } @@ -3648,6 +3742,11 @@ }, "x-go-package": "k8s.io/api/core/v1" }, + "v1NodeInclusionPolicy": { + "description": "NodeInclusionPolicy defines the type of node inclusion policy\n+enum", + "type": "string", + "x-go-package": "k8s.io/api/core/v1" + }, "v1NodeSelector": { "description": "A node selector represents the union of the results of one or more label queries\nover a set of nodes; that is, it represents the OR of the selectors represented\nby the node selector terms.\n+structType=atomic", "type": "object", @@ -3664,7 +3763,7 @@ "x-go-package": "k8s.io/api/core/v1" }, "v1NodeSelectorOperator": { - "description": "A node selector operator is the set of operators that can be used in\na node selector requirement.", + "description": "A node selector operator is the set of operators that can be used in\na node selector requirement.\n+enum", "type": "string", "x-go-package": "k8s.io/api/core/v1" }, @@ -3714,6 +3813,11 @@ }, "x-go-package": "k8s.io/api/core/v1" }, + "v1OSName": { + "type": "string", + "title": "OSName is the set of OS'es that can be used in OS.", + "x-go-package": "k8s.io/api/core/v1" + }, "v1ObjectFieldSelector": { "description": "+structType=atomic", "type": "object", @@ -3744,11 +3848,6 @@ }, "x-go-name": "Annotations" }, - "clusterName": { - "description": "The name of the cluster which the object belongs to.\nThis is used to distinguish resources with same name and namespace in different clusters.\nThis field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.\n+optional", - "type": "string", - "x-go-name": "ClusterName" - }, "creationTimestamp": { "$ref": "#/definitions/v1Time" }, @@ -3770,7 +3869,7 @@ "x-go-name": "Finalizers" }, "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique\nname ONLY IF the Name field has not been provided.\nIf this field is used, the name returned to the client will be different\nthan the name passed. This value will also be combined with a unique suffix.\nThe provided value has the same validation rules as the Name field,\nand may be truncated by the length of the suffix required to make the value\nunique on the server.\n\nIf this field is specified and the generated name exists, the server will\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\nshould retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\n+optional", + "description": "GenerateName is an optional prefix, used by the server, to generate a unique\nname ONLY IF the Name field has not been provided.\nIf this field is used, the name returned to the client will be different\nthan the name passed. This value will also be combined with a unique suffix.\nThe provided value has the same validation rules as the Name field,\nand may be truncated by the length of the suffix required to make the value\nunique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\n+optional", "type": "string", "x-go-name": "GenerateName" }, @@ -3820,7 +3919,7 @@ "x-go-name": "ResourceVersion" }, "selfLink": { - "description": "SelfLink is a URL representing this object.\nPopulated by the system.\nRead-only.\n\nDEPRECATED\nKubernetes will stop propagating this field in 1.20 release and the field is planned\nto be removed in 1.21 release.\n+optional", + "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.\n+optional", "type": "string", "x-go-name": "SelfLink" }, @@ -3840,7 +3939,7 @@ "x-go-name": "APIVersion" }, "blockOwnerDeletion": { - "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then\nthe owner cannot be deleted from the key-value store until this\nreference is removed.\nDefaults to false.\nTo set this field, a user needs \"delete\" permission of the owner,\notherwise 422 (Unprocessable Entity) will be returned.\n+optional", + "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then\nthe owner cannot be deleted from the key-value store until this\nreference is removed.\nSee https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion\nfor how the garbage collector interacts with this field and enforces the foreground deletion.\nDefaults to false.\nTo set this field, a user needs \"delete\" permission of the owner,\notherwise 422 (Unprocessable Entity) will be returned.\n+optional", "type": "boolean", "x-go-name": "BlockOwnerDeletion" }, @@ -3866,6 +3965,7 @@ "x-go-package": "k8s.io/apimachinery/pkg/apis/meta/v1" }, "v1PersistentVolumeAccessMode": { + "description": "+enum", "type": "string", "x-go-package": "k8s.io/api/core/v1" }, @@ -3874,7 +3974,7 @@ "type": "object", "properties": { "accessModes": { - "description": "AccessModes contains the desired access modes the volume should have.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n+optional", + "description": "accessModes contains the desired access modes the volume should have.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1\n+optional", "type": "array", "items": { "$ref": "#/definitions/v1PersistentVolumeAccessMode" @@ -3885,7 +3985,7 @@ "$ref": "#/definitions/v1TypedLocalObjectReference" }, "dataSourceRef": { - "$ref": "#/definitions/v1TypedLocalObjectReference" + "$ref": "#/definitions/v1TypedObjectReference" }, "resources": { "$ref": "#/definitions/v1ResourceRequirements" @@ -3894,7 +3994,7 @@ "$ref": "#/definitions/v1LabelSelector" }, "storageClassName": { - "description": "Name of the StorageClass required by the claim.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\n+optional", + "description": "storageClassName is the name of the StorageClass required by the claim.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1\n+optional", "type": "string", "x-go-name": "StorageClassName" }, @@ -3902,7 +4002,7 @@ "$ref": "#/definitions/v1PersistentVolumeMode" }, "volumeName": { - "description": "VolumeName is the binding reference to the PersistentVolume backing this claim.\n+optional", + "description": "volumeName is the binding reference to the PersistentVolume backing this claim.\n+optional", "type": "string", "x-go-name": "VolumeName" } @@ -3921,11 +4021,6 @@ }, "x-go-name": "Annotations" }, - "clusterName": { - "description": "The name of the cluster which the object belongs to.\nThis is used to distinguish resources with same name and namespace in different clusters.\nThis field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.\n+optional", - "type": "string", - "x-go-name": "ClusterName" - }, "creationTimestamp": { "$ref": "#/definitions/v1Time" }, @@ -3947,7 +4042,7 @@ "x-go-name": "Finalizers" }, "generateName": { - "description": "GenerateName is an optional prefix, used by the server, to generate a unique\nname ONLY IF the Name field has not been provided.\nIf this field is used, the name returned to the client will be different\nthan the name passed. This value will also be combined with a unique suffix.\nThe provided value has the same validation rules as the Name field,\nand may be truncated by the length of the suffix required to make the value\nunique on the server.\n\nIf this field is specified and the generated name exists, the server will\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\nshould retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\n+optional", + "description": "GenerateName is an optional prefix, used by the server, to generate a unique\nname ONLY IF the Name field has not been provided.\nIf this field is used, the name returned to the client will be different\nthan the name passed. This value will also be combined with a unique suffix.\nThe provided value has the same validation rules as the Name field,\nand may be truncated by the length of the suffix required to make the value\nunique on the server.\n\nIf this field is specified and the generated name exists, the server will return a 409.\n\nApplied only if Name is not specified.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\n+optional", "type": "string", "x-go-name": "GenerateName" }, @@ -3997,7 +4092,7 @@ "x-go-name": "ResourceVersion" }, "selfLink": { - "description": "SelfLink is a URL representing this object.\nPopulated by the system.\nRead-only.\n\nDEPRECATED\nKubernetes will stop propagating this field in 1.20 release and the field is planned\nto be removed in 1.21 release.\n+optional", + "description": "Deprecated: selfLink is a legacy read-only field that is no longer populated by the system.\n+optional", "type": "string", "x-go-name": "SelfLink" }, @@ -4016,12 +4111,12 @@ "title": "PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace.", "properties": { "claimName": { - "description": "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", + "description": "claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims", "type": "string", "x-go-name": "ClaimName" }, "readOnly": { - "description": "Will force the ReadOnly setting in VolumeMounts.\nDefault false.\n+optional", + "description": "readOnly Will force the ReadOnly setting in VolumeMounts.\nDefault false.\n+optional", "type": "boolean", "x-go-name": "ReadOnly" } @@ -4029,6 +4124,7 @@ "x-go-package": "k8s.io/api/core/v1" }, "v1PersistentVolumeMode": { + "description": "+enum", "type": "string", "title": "PersistentVolumeMode describes how a volume is intended to be consumed, either Block or Filesystem.", "x-go-package": "k8s.io/api/core/v1" @@ -4038,12 +4134,12 @@ "title": "Represents a Photon Controller persistent disk resource.", "properties": { "fsType": { - "description": "Filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "description": "fsType is the filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.", "type": "string", "x-go-name": "FSType" }, "pdID": { - "description": "ID that identifies Photon Controller persistent disk", + "description": "pdID is the ID that identifies Photon Controller persistent disk", "type": "string", "x-go-name": "PdID" } @@ -4084,7 +4180,7 @@ "$ref": "#/definitions/v1LabelSelector" }, "namespaces": { - "description": "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\"\n+optional", + "description": "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\".\n+optional", "type": "array", "items": { "type": "string" @@ -4176,10 +4272,20 @@ "x-go-package": "k8s.io/api/core/v1" }, "v1PodFSGroupChangePolicy": { - "description": "PodFSGroupChangePolicy holds policies that will be used for applying fsGroup to a volume\nwhen volume is mounted.", + "description": "PodFSGroupChangePolicy holds policies that will be used for applying fsGroup to a volume\nwhen volume is mounted.\n+enum", "type": "string", "x-go-package": "k8s.io/api/core/v1" }, + "v1PodOS": { + "type": "object", + "title": "PodOS defines the OS parameters of a pod.", + "properties": { + "name": { + "$ref": "#/definitions/v1OSName" + } + }, + "x-go-package": "k8s.io/api/core/v1" + }, "v1PodReadinessGate": { "description": "PodReadinessGate contains the reference to a pod condition", "type": "object", @@ -4190,13 +4296,41 @@ }, "x-go-package": "k8s.io/api/core/v1" }, + "v1PodResourceClaim": { + "description": "It adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\nContainers that need access to the ResourceClaim reference it with this name.", + "type": "object", + "title": "PodResourceClaim references exactly one ResourceClaim through a ClaimSource.", + "properties": { + "name": { + "description": "Name uniquely identifies this resource claim inside the pod.\nThis must be a DNS_LABEL.", + "type": "string", + "x-go-name": "Name" + }, + "source": { + "$ref": "#/definitions/v1ClaimSource" + } + }, + "x-go-package": "k8s.io/api/core/v1" + }, + "v1PodSchedulingGate": { + "type": "object", + "title": "PodSchedulingGate is associated to a Pod to guard its scheduling.", + "properties": { + "name": { + "description": "Name of the scheduling gate.\nEach scheduling gate must have a unique name field.", + "type": "string", + "x-go-name": "Name" + } + }, + "x-go-package": "k8s.io/api/core/v1" + }, "v1PodSecurityContext": { "description": "Some fields are also present in container.securityContext. Field values of\ncontainer.securityContext take precedence over field values of PodSecurityContext.", "type": "object", "title": "PodSecurityContext holds pod-level security attributes and common container settings.", "properties": { "fsGroup": { - "description": "A special supplemental group that applies to all containers in a pod.\nSome volume types allow the Kubelet to change the ownership of that volume\nto be owned by the pod:\n\n1. The owning GID will be the FSGroup\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\n3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\n+optional", + "description": "A special supplemental group that applies to all containers in a pod.\nSome volume types allow the Kubelet to change the ownership of that volume\nto be owned by the pod:\n\n1. The owning GID will be the FSGroup\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\n3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\nNote that this field cannot be set when spec.os.name is windows.\n+optional", "type": "integer", "format": "int64", "x-go-name": "FSGroup" @@ -4205,7 +4339,7 @@ "$ref": "#/definitions/v1PodFSGroupChangePolicy" }, "runAsGroup": { - "description": "The GID to run the entrypoint of the container process.\nUses runtime default if unset.\nMay also be set in SecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence\nfor that container.\n+optional", + "description": "The GID to run the entrypoint of the container process.\nUses runtime default if unset.\nMay also be set in SecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence\nfor that container.\nNote that this field cannot be set when spec.os.name is windows.\n+optional", "type": "integer", "format": "int64", "x-go-name": "RunAsGroup" @@ -4216,7 +4350,7 @@ "x-go-name": "RunAsNonRoot" }, "runAsUser": { - "description": "The UID to run the entrypoint of the container process.\nDefaults to user specified in image metadata if unspecified.\nMay also be set in SecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence\nfor that container.\n+optional", + "description": "The UID to run the entrypoint of the container process.\nDefaults to user specified in image metadata if unspecified.\nMay also be set in SecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence\nfor that container.\nNote that this field cannot be set when spec.os.name is windows.\n+optional", "type": "integer", "format": "int64", "x-go-name": "RunAsUser" @@ -4228,7 +4362,7 @@ "$ref": "#/definitions/v1SeccompProfile" }, "supplementalGroups": { - "description": "A list of groups applied to the first process run in each container, in addition\nto the container's primary GID. If unspecified, no groups will be added to\nany container.\n+optional", + "description": "A list of groups applied to the first process run in each container, in addition\nto the container's primary GID, the fsGroup (if specified), and group memberships\ndefined in the container image for the uid of the container process. If unspecified,\nno additional groups are added to any container. Note that group memberships\ndefined in the container image for the uid of the container process are still effective,\neven if they are not included in this list.\nNote that this field cannot be set when spec.os.name is windows.\n+optional", "type": "array", "items": { "type": "integer", @@ -4237,7 +4371,7 @@ "x-go-name": "SupplementalGroups" }, "sysctls": { - "description": "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\nsysctls (by the container runtime) might fail to launch.\n+optional", + "description": "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\nsysctls (by the container runtime) might fail to launch.\nNote that this field cannot be set when spec.os.name is windows.\n+optional", "type": "array", "items": { "$ref": "#/definitions/v1Sysctl" @@ -4288,7 +4422,7 @@ "x-go-name": "EnableServiceLinks" }, "ephemeralContainers": { - "description": "List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\npod to perform user-initiated actions such as debugging. This list cannot be specified when\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\nThis field is alpha-level and is only honored by servers that enable the EphemeralContainers feature.\n+optional\n+patchMergeKey=name\n+patchStrategy=merge", + "description": "List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\npod to perform user-initiated actions such as debugging. This list cannot be specified when\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.\n+optional\n+patchMergeKey=name\n+patchStrategy=merge", "type": "array", "items": { "$ref": "#/definitions/v1EphemeralContainer" @@ -4318,13 +4452,18 @@ "type": "boolean", "x-go-name": "HostPID" }, + "hostUsers": { + "description": "Use the host's user namespace.\nOptional: Default to true.\nIf set to true or not present, the pod will be run in the host user namespace, useful\nfor when the pod needs a feature only available to the host user namespace, such as\nloading a kernel module with CAP_SYS_MODULE.\nWhen set to false, a new userns is created for the pod. Setting false is useful for\nmitigating container breakout vulnerabilities even allowing users to run their\ncontainers as root without actually having root privileges on the host.\nThis field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.\n+k8s:conversion-gen=false\n+optional", + "type": "boolean", + "x-go-name": "HostUsers" + }, "hostname": { "description": "Specifies the hostname of the Pod\nIf not specified, the pod's hostname will be set to a system-defined value.\n+optional", "type": "string", "x-go-name": "Hostname" }, "imagePullSecrets": { - "description": "ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\nIf specified, these secrets will be passed to individual puller implementations for them to use. For example,\nin the case of docker, only DockerConfig type secrets are honored.\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n+optional\n+patchMergeKey=name\n+patchStrategy=merge", + "description": "ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec.\nIf specified, these secrets will be passed to individual puller implementations for them to use.\nMore info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod\n+optional\n+patchMergeKey=name\n+patchStrategy=merge", "type": "array", "items": { "$ref": "#/definitions/v1LocalObjectReference" @@ -4352,6 +4491,9 @@ }, "x-go-name": "NodeSelector" }, + "os": { + "$ref": "#/definitions/v1PodOS" + }, "overhead": { "$ref": "#/definitions/v1ResourceList" }, @@ -4377,11 +4519,19 @@ }, "x-go-name": "ReadinessGates" }, + "resourceClaims": { + "description": "ResourceClaims defines which ResourceClaims must be allocated\nand reserved before the Pod is allowed to start. The resources\nwill be made available to those containers which consume them\nby name.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable.\n\n+patchMergeKey=name\n+patchStrategy=merge,retainKeys\n+listType=map\n+listMapKey=name\n+featureGate=DynamicResourceAllocation\n+optional", + "type": "array", + "items": { + "$ref": "#/definitions/v1PodResourceClaim" + }, + "x-go-name": "ResourceClaims" + }, "restartPolicy": { "$ref": "#/definitions/v1RestartPolicy" }, "runtimeClassName": { - "description": "RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\nIf unset or empty, the \"legacy\" RuntimeClass will be used, which is an implicit class with an\nempty definition that uses the default runtime handler.\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\nThis is a beta feature as of Kubernetes v1.14.\n+optional", + "description": "RuntimeClassName refers to a RuntimeClass object in the node.k8s.io group, which should be used\nto run this pod. If no RuntimeClass resource matches the named class, the pod will not be run.\nIf unset or empty, the \"legacy\" RuntimeClass will be used, which is an implicit class with an\nempty definition that uses the default runtime handler.\nMore info: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class\n+optional", "type": "string", "x-go-name": "RuntimeClassName" }, @@ -4390,6 +4540,14 @@ "type": "string", "x-go-name": "SchedulerName" }, + "schedulingGates": { + "description": "SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\nMore info: https://git.k8s.io/enhancements/keps/sig-scheduling/3521-pod-scheduling-readiness.\n\nThis is an alpha-level feature enabled by PodSchedulingReadiness feature gate.\n+optional\n+patchMergeKey=name\n+patchStrategy=merge\n+listType=map\n+listMapKey=name", + "type": "array", + "items": { + "$ref": "#/definitions/v1PodSchedulingGate" + }, + "x-go-name": "SchedulingGates" + }, "securityContext": { "$ref": "#/definitions/v1PodSecurityContext" }, @@ -4474,17 +4632,17 @@ "title": "PortworxVolumeSource represents a Portworx volume resource.", "properties": { "fsType": { - "description": "FSType represents the filesystem type to mount\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.", + "description": "fSType represents the filesystem type to mount\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified.", "type": "string", "x-go-name": "FSType" }, "readOnly": { - "description": "Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\n+optional", + "description": "readOnly defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\n+optional", "type": "boolean", "x-go-name": "ReadOnly" }, "volumeID": { - "description": "VolumeID uniquely identifies a Portworx volume", + "description": "volumeID uniquely identifies a Portworx volume", "type": "string", "x-go-name": "VolumeID" } @@ -4492,6 +4650,7 @@ "x-go-package": "k8s.io/api/core/v1" }, "v1PreemptionPolicy": { + "description": "+enum", "type": "string", "title": "PreemptionPolicy describes a policy for if/when to preempt a pod.", "x-go-package": "k8s.io/api/core/v1" @@ -4525,6 +4684,9 @@ "format": "int32", "x-go-name": "FailureThreshold" }, + "grpc": { + "$ref": "#/definitions/v1GRPCAction" + }, "httpGet": { "$ref": "#/definitions/v1HTTPGetAction" }, @@ -4565,6 +4727,7 @@ "x-go-package": "k8s.io/api/core/v1" }, "v1ProcMountType": { + "description": "+enum", "type": "string", "x-go-package": "k8s.io/api/core/v1" }, @@ -4573,13 +4736,13 @@ "type": "object", "properties": { "defaultMode": { - "description": "Mode bits used to set permissions on created files by default.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\nDirectories within the path are not affected by this setting.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set.\n+optional", + "description": "defaultMode are the mode bits used to set permissions on created files by default.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\nDirectories within the path are not affected by this setting.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set.\n+optional", "type": "integer", "format": "int32", "x-go-name": "DefaultMode" }, "sources": { - "description": "list of volume projections\n+optional", + "description": "sources is the list of volume projections\n+optional", "type": "array", "items": { "$ref": "#/definitions/v1VolumeProjection" @@ -4590,12 +4753,13 @@ "x-go-package": "k8s.io/api/core/v1" }, "v1Protocol": { + "description": "+enum", "type": "string", "title": "Protocol defines network protocols supported for things like container ports.", "x-go-package": "k8s.io/api/core/v1" }, "v1PullPolicy": { - "description": "PullPolicy describes a policy for if/when to pull a container image", + "description": "PullPolicy describes a policy for if/when to pull a container image\n+enum", "type": "string", "x-go-package": "k8s.io/api/core/v1" }, @@ -4605,32 +4769,32 @@ "title": "Represents a Quobyte mount that lasts the lifetime of a pod.", "properties": { "group": { - "description": "Group to map volume access to\nDefault is no group\n+optional", + "description": "group to map volume access to\nDefault is no group\n+optional", "type": "string", "x-go-name": "Group" }, "readOnly": { - "description": "ReadOnly here will force the Quobyte volume to be mounted with read-only permissions.\nDefaults to false.\n+optional", + "description": "readOnly here will force the Quobyte volume to be mounted with read-only permissions.\nDefaults to false.\n+optional", "type": "boolean", "x-go-name": "ReadOnly" }, "registry": { - "description": "Registry represents a single or multiple Quobyte Registry services\nspecified as a string as host:port pair (multiple entries are separated with commas)\nwhich acts as the central registry for volumes", + "description": "registry represents a single or multiple Quobyte Registry services\nspecified as a string as host:port pair (multiple entries are separated with commas)\nwhich acts as the central registry for volumes", "type": "string", "x-go-name": "Registry" }, "tenant": { - "description": "Tenant owning the given Quobyte volume in the Backend\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\n+optional", + "description": "tenant owning the given Quobyte volume in the Backend\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin\n+optional", "type": "string", "x-go-name": "Tenant" }, "user": { - "description": "User to map volume access to\nDefaults to serivceaccount user\n+optional", + "description": "user to map volume access to\nDefaults to serivceaccount user\n+optional", "type": "string", "x-go-name": "User" }, "volume": { - "description": "Volume is a string that references an already created Quobyte volume by name.", + "description": "volume is a string that references an already created Quobyte volume by name.", "type": "string", "x-go-name": "Volume" } @@ -4643,22 +4807,22 @@ "title": "Represents a Rados Block Device mount that lasts the lifetime of a pod.", "properties": { "fsType": { - "description": "Filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\nTODO: how do we prevent errors in the filesystem from compromising the machine\n+optional", + "description": "fsType is the filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\nTODO: how do we prevent errors in the filesystem from compromising the machine\n+optional", "type": "string", "x-go-name": "FSType" }, "image": { - "description": "The rados image name.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", + "description": "image is the rados image name.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "string", "x-go-name": "RBDImage" }, "keyring": { - "description": "Keyring is the path to key ring for RBDUser.\nDefault is /etc/ceph/keyring.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n+optional", + "description": "keyring is the path to key ring for RBDUser.\nDefault is /etc/ceph/keyring.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n+optional", "type": "string", "x-go-name": "Keyring" }, "monitors": { - "description": "A collection of Ceph monitors.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", + "description": "monitors is a collection of Ceph monitors.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it", "type": "array", "items": { "type": "string" @@ -4666,12 +4830,12 @@ "x-go-name": "CephMonitors" }, "pool": { - "description": "The rados pool name.\nDefault is rbd.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n+optional", + "description": "pool is the rados pool name.\nDefault is rbd.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n+optional", "type": "string", "x-go-name": "RBDPool" }, "readOnly": { - "description": "ReadOnly here will force the ReadOnly setting in VolumeMounts.\nDefaults to false.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n+optional", + "description": "readOnly here will force the ReadOnly setting in VolumeMounts.\nDefaults to false.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n+optional", "type": "boolean", "x-go-name": "ReadOnly" }, @@ -4679,13 +4843,25 @@ "$ref": "#/definitions/v1LocalObjectReference" }, "user": { - "description": "The rados user name.\nDefault is admin.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n+optional", + "description": "user is the rados user name.\nDefault is admin.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it\n+optional", "type": "string", "x-go-name": "RadosUser" } }, "x-go-package": "k8s.io/api/core/v1" }, + "v1ResourceClaim": { + "type": "object", + "title": "ResourceClaim references one entry in PodSpec.ResourceClaims.", + "properties": { + "name": { + "description": "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container.", + "type": "string", + "x-go-name": "Name" + } + }, + "x-go-package": "k8s.io/api/core/v1" + }, "v1ResourceFieldSelector": { "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format\n+structType=atomic", "type": "object", @@ -4718,6 +4894,14 @@ "type": "object", "title": "ResourceRequirements describes the compute resource requirements.", "properties": { + "claims": { + "description": "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers.\n\n+listType=map\n+listMapKey=name\n+featureGate=DynamicResourceAllocation\n+optional", + "type": "array", + "items": { + "$ref": "#/definitions/v1ResourceClaim" + }, + "x-go-name": "Claims" + }, "limits": { "$ref": "#/definitions/v1ResourceList" }, @@ -4728,7 +4912,7 @@ "x-go-package": "k8s.io/api/core/v1" }, "v1RestartPolicy": { - "description": "Only one of the following restart policies may be specified.\nIf none of the following policies is specified, the default one\nis RestartPolicyAlways.", + "description": "Only one of the following restart policies may be specified.\nIf none of the following policies is specified, the default one\nis RestartPolicyAlways.\n+enum", "type": "string", "title": "RestartPolicy describes how the container should be restarted.", "x-go-package": "k8s.io/api/core/v1" @@ -4765,22 +4949,22 @@ "type": "object", "properties": { "fsType": { - "description": "Filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\".\nDefault is \"xfs\".\n+optional", + "description": "fsType is the filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\".\nDefault is \"xfs\".\n+optional", "type": "string", "x-go-name": "FSType" }, "gateway": { - "description": "The host address of the ScaleIO API Gateway.", + "description": "gateway is the host address of the ScaleIO API Gateway.", "type": "string", "x-go-name": "Gateway" }, "protectionDomain": { - "description": "The name of the ScaleIO Protection Domain for the configured storage.\n+optional", + "description": "protectionDomain is the name of the ScaleIO Protection Domain for the configured storage.\n+optional", "type": "string", "x-go-name": "ProtectionDomain" }, "readOnly": { - "description": "Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\n+optional", + "description": "readOnly Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\n+optional", "type": "boolean", "x-go-name": "ReadOnly" }, @@ -4788,27 +4972,27 @@ "$ref": "#/definitions/v1LocalObjectReference" }, "sslEnabled": { - "description": "Flag to enable/disable SSL communication with Gateway, default false\n+optional", + "description": "sslEnabled Flag enable/disable SSL communication with Gateway, default false\n+optional", "type": "boolean", "x-go-name": "SSLEnabled" }, "storageMode": { - "description": "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\nDefault is ThinProvisioned.\n+optional", + "description": "storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\nDefault is ThinProvisioned.\n+optional", "type": "string", "x-go-name": "StorageMode" }, "storagePool": { - "description": "The ScaleIO Storage Pool associated with the protection domain.\n+optional", + "description": "storagePool is the ScaleIO Storage Pool associated with the protection domain.\n+optional", "type": "string", "x-go-name": "StoragePool" }, "system": { - "description": "The name of the storage system as configured in ScaleIO.", + "description": "system is the name of the storage system as configured in ScaleIO.", "type": "string", "x-go-name": "System" }, "volumeName": { - "description": "The name of a volume already created in the ScaleIO system\nthat is associated with this volume source.", + "description": "volumeName is the name of a volume already created in the ScaleIO system\nthat is associated with this volume source.", "type": "string", "x-go-name": "VolumeName" } @@ -4832,6 +5016,7 @@ "x-go-package": "k8s.io/api/core/v1" }, "v1SeccompProfileType": { + "description": "+enum", "type": "string", "title": "SeccompProfileType defines the supported seccomp profile types.", "x-go-package": "k8s.io/api/core/v1" @@ -4883,7 +5068,7 @@ "title": "Adapts a secret into a projected volume.", "properties": { "items": { - "description": "If unspecified, each key-value pair in the Data field of the referenced\nSecret will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the Secret,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'.\n+optional", + "description": "items if unspecified, each key-value pair in the Data field of the referenced\nSecret will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the Secret,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'.\n+optional", "type": "array", "items": { "$ref": "#/definitions/v1KeyToPath" @@ -4896,7 +5081,7 @@ "x-go-name": "Name" }, "optional": { - "description": "Specify whether the Secret or its key must be defined\n+optional", + "description": "optional field specify whether the Secret or its key must be defined\n+optional", "type": "boolean", "x-go-name": "Optional" } @@ -4909,13 +5094,13 @@ "title": "Adapts a Secret into a volume.", "properties": { "defaultMode": { - "description": "Optional: mode bits used to set permissions on created files by default.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values\nfor mode bits. Defaults to 0644.\nDirectories within the path are not affected by this setting.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set.\n+optional", + "description": "defaultMode is Optional: mode bits used to set permissions on created files by default.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values\nfor mode bits. Defaults to 0644.\nDirectories within the path are not affected by this setting.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set.\n+optional", "type": "integer", "format": "int32", "x-go-name": "DefaultMode" }, "items": { - "description": "If unspecified, each key-value pair in the Data field of the referenced\nSecret will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the Secret,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'.\n+optional", + "description": "items If unspecified, each key-value pair in the Data field of the referenced\nSecret will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the Secret,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'.\n+optional", "type": "array", "items": { "$ref": "#/definitions/v1KeyToPath" @@ -4923,12 +5108,12 @@ "x-go-name": "Items" }, "optional": { - "description": "Specify whether the Secret or its keys must be defined\n+optional", + "description": "optional field specify whether the Secret or its keys must be defined\n+optional", "type": "boolean", "x-go-name": "Optional" }, "secretName": { - "description": "Name of the secret in the pod's namespace to use.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n+optional", + "description": "secretName is the name of the secret in the pod's namespace to use.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret\n+optional", "type": "string", "x-go-name": "SecretName" } @@ -4941,7 +5126,7 @@ "title": "SecurityContext holds security configuration that will be applied to a container.", "properties": { "allowPrivilegeEscalation": { - "description": "AllowPrivilegeEscalation controls whether a process can gain more\nprivileges than its parent process. This bool directly controls if\nthe no_new_privs flag will be set on the container process.\nAllowPrivilegeEscalation is true always when the container is:\n1) run as Privileged\n2) has CAP_SYS_ADMIN\n+optional", + "description": "AllowPrivilegeEscalation controls whether a process can gain more\nprivileges than its parent process. This bool directly controls if\nthe no_new_privs flag will be set on the container process.\nAllowPrivilegeEscalation is true always when the container is:\n1) run as Privileged\n2) has CAP_SYS_ADMIN\nNote that this field cannot be set when spec.os.name is windows.\n+optional", "type": "boolean", "x-go-name": "AllowPrivilegeEscalation" }, @@ -4949,7 +5134,7 @@ "$ref": "#/definitions/v1Capabilities" }, "privileged": { - "description": "Run container in privileged mode.\nProcesses in privileged containers are essentially equivalent to root on the host.\nDefaults to false.\n+optional", + "description": "Run container in privileged mode.\nProcesses in privileged containers are essentially equivalent to root on the host.\nDefaults to false.\nNote that this field cannot be set when spec.os.name is windows.\n+optional", "type": "boolean", "x-go-name": "Privileged" }, @@ -4957,12 +5142,12 @@ "$ref": "#/definitions/v1ProcMountType" }, "readOnlyRootFilesystem": { - "description": "Whether this container has a read-only root filesystem.\nDefault is false.\n+optional", + "description": "Whether this container has a read-only root filesystem.\nDefault is false.\nNote that this field cannot be set when spec.os.name is windows.\n+optional", "type": "boolean", "x-go-name": "ReadOnlyRootFilesystem" }, "runAsGroup": { - "description": "The GID to run the entrypoint of the container process.\nUses runtime default if unset.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\n+optional", + "description": "The GID to run the entrypoint of the container process.\nUses runtime default if unset.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is windows.\n+optional", "type": "integer", "format": "int64", "x-go-name": "RunAsGroup" @@ -4973,7 +5158,7 @@ "x-go-name": "RunAsNonRoot" }, "runAsUser": { - "description": "The UID to run the entrypoint of the container process.\nDefaults to user specified in image metadata if unspecified.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\n+optional", + "description": "The UID to run the entrypoint of the container process.\nDefaults to user specified in image metadata if unspecified.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is windows.\n+optional", "type": "integer", "format": "int64", "x-go-name": "RunAsUser" @@ -5013,18 +5198,18 @@ "type": "object", "properties": { "audience": { - "description": "Audience is the intended audience of the token. A recipient of a token\nmust identify itself with an identifier specified in the audience of the\ntoken, and otherwise should reject the token. The audience defaults to the\nidentifier of the apiserver.\n+optional", + "description": "audience is the intended audience of the token. A recipient of a token\nmust identify itself with an identifier specified in the audience of the\ntoken, and otherwise should reject the token. The audience defaults to the\nidentifier of the apiserver.\n+optional", "type": "string", "x-go-name": "Audience" }, "expirationSeconds": { - "description": "ExpirationSeconds is the requested duration of validity of the service\naccount token. As the token approaches expiration, the kubelet volume\nplugin will proactively rotate the service account token. The kubelet will\nstart trying to rotate the token if the token is older than 80 percent of\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\nand must be at least 10 minutes.\n+optional", + "description": "expirationSeconds is the requested duration of validity of the service\naccount token. As the token approaches expiration, the kubelet volume\nplugin will proactively rotate the service account token. The kubelet will\nstart trying to rotate the token if the token is older than 80 percent of\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\nand must be at least 10 minutes.\n+optional", "type": "integer", "format": "int64", "x-go-name": "ExpirationSeconds" }, "path": { - "description": "Path is the path relative to the mount point of the file to project the\ntoken into.", + "description": "path is the path relative to the mount point of the file to project the\ntoken into.", "type": "string", "x-go-name": "Path" } @@ -5052,7 +5237,7 @@ "properties": { "appProtocol": { "type": "string", - "title": "The application protocol for this port.\nThis field follows standard Kubernetes label syntax.\nUn-prefixed names are reserved for IANA standard service names (as per\nRFC-6335 and http://www.iana.org/assignments/service-names).\nNon-standard protocols should use prefixed names such as\nmycompany.com/my-custom-protocol.\n+optional" + "title": "The application protocol for this port.\nThis field follows standard Kubernetes label syntax.\nUn-prefixed names are reserved for IANA standard service names (as per\nRFC-6335 and https://www.iana.org/assignments/service-names).\nNon-standard protocols should use prefixed names such as\nmycompany.com/my-custom-protocol.\n+optional" }, "name": { "type": "string", @@ -5084,14 +5269,14 @@ "properties": { "allocateLoadBalancerNodePorts": { "type": "boolean", - "title": "allocateLoadBalancerNodePorts defines if NodePorts will be automatically\nallocated for services with type LoadBalancer. Default is \"true\". It\nmay be set to \"false\" if the cluster load-balancer does not rely on\nNodePorts. If the caller requests specific NodePorts (by specifying a\nvalue), those requests will be respected, regardless of this field.\nThis field may only be set for services with type LoadBalancer and will\nbe cleared if the type is changed to any other type.\nThis field is beta-level and is only honored by servers that enable the ServiceLBNodePortControl feature.\n+featureGate=ServiceLBNodePortControl\n+optional" + "title": "allocateLoadBalancerNodePorts defines if NodePorts will be automatically\nallocated for services with type LoadBalancer. Default is \"true\". It\nmay be set to \"false\" if the cluster load-balancer does not rely on\nNodePorts. If the caller requests specific NodePorts (by specifying a\nvalue), those requests will be respected, regardless of this field.\nThis field may only be set for services with type LoadBalancer and will\nbe cleared if the type is changed to any other type.\n+optional" }, "clusterIP": { "type": "string", "title": "clusterIP is the IP address of the service and is usually assigned\nrandomly. If an address is specified manually, is in-range (as per\nsystem configuration), and is not in use, it will be allocated to the\nservice; otherwise creation of the service will fail. This field may not\nbe changed through updates unless the type field is also being changed\nto ExternalName (which requires this field to be blank) or the type\nfield is being changed from ExternalName (in which case this field may\noptionally be specified, as describe above). Valid values are \"None\",\nempty string (\"\"), or a valid IP address. Setting this to \"None\" makes a\n\"headless service\" (no virtual IP), which is useful when direct endpoint\nconnections are preferred and proxying is not required. Only applies to\ntypes ClusterIP, NodePort, and LoadBalancer. If this field is specified\nwhen creating a Service of type ExternalName, creation will fail. This\nfield will be wiped when updating a Service to type ExternalName.\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n+optional" }, "clusterIPs": { - "description": "ClusterIPs is a list of IP addresses assigned to this service, and are\nusually assigned randomly. If an address is specified manually, is\nin-range (as per system configuration), and is not in use, it will be\nallocated to the service; otherwise creation of the service will fail.\nThis field may not be changed through updates unless the type field is\nalso being changed to ExternalName (which requires this field to be\nempty) or the type field is being changed from ExternalName (in which\ncase this field may optionally be specified, as describe above). Valid\nvalues are \"None\", empty string (\"\"), or a valid IP address. Setting\nthis to \"None\" makes a \"headless service\" (no virtual IP), which is\nuseful when direct endpoint connections are preferred and proxying is\nnot required. Only applies to types ClusterIP, NodePort, and\nLoadBalancer. If this field is specified when creating a Service of type\nExternalName, creation will fail. This field will be wiped when updating\na Service to type ExternalName. If this field is not specified, it will\nbe initialized from the clusterIP field. If this field is specified,\nclients must ensure that clusterIPs[0] and clusterIP have the same\nvalue.\n\nUnless the \"IPv6DualStack\" feature gate is enabled, this field is\nlimited to one value, which must be the same as the clusterIP field. If\nthe feature gate is enabled, this field may hold a maximum of two\nentries (dual-stack IPs, in either order). These IPs must correspond to\nthe values of the ipFamilies field. Both clusterIPs and ipFamilies are\ngoverned by the ipFamilyPolicy field.\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n+listType=atomic\n+optional", + "description": "ClusterIPs is a list of IP addresses assigned to this service, and are\nusually assigned randomly. If an address is specified manually, is\nin-range (as per system configuration), and is not in use, it will be\nallocated to the service; otherwise creation of the service will fail.\nThis field may not be changed through updates unless the type field is\nalso being changed to ExternalName (which requires this field to be\nempty) or the type field is being changed from ExternalName (in which\ncase this field may optionally be specified, as describe above). Valid\nvalues are \"None\", empty string (\"\"), or a valid IP address. Setting\nthis to \"None\" makes a \"headless service\" (no virtual IP), which is\nuseful when direct endpoint connections are preferred and proxying is\nnot required. Only applies to types ClusterIP, NodePort, and\nLoadBalancer. If this field is specified when creating a Service of type\nExternalName, creation will fail. This field will be wiped when updating\na Service to type ExternalName. If this field is not specified, it will\nbe initialized from the clusterIP field. If this field is specified,\nclients must ensure that clusterIPs[0] and clusterIP have the same\nvalue.\n\nThis field may hold a maximum of two entries (dual-stack IPs, in either order).\nThese IPs must correspond to the values of the ipFamilies field. Both\nclusterIPs and ipFamilies are governed by the ipFamilyPolicy field.\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies\n+listType=atomic\n+optional", "type": "array", "items": { "type": "string" @@ -5110,19 +5295,19 @@ }, "externalTrafficPolicy": { "type": "string", - "title": "externalTrafficPolicy denotes if this Service desires to route external\ntraffic to node-local or cluster-wide endpoints. \"Local\" preserves the\nclient source IP and avoids a second hop for LoadBalancer and Nodeport\ntype services, but risks potentially imbalanced traffic spreading.\n\"Cluster\" obscures the client source IP and may cause a second hop to\nanother node, but should have good overall load-spreading.\n+optional" + "title": "externalTrafficPolicy describes how nodes distribute service traffic they\nreceive on one of the Service's \"externally-facing\" addresses (NodePorts,\nExternalIPs, and LoadBalancer IPs). If set to \"Local\", the proxy will configure\nthe service in a way that assumes that external load balancers will take care\nof balancing the service traffic between nodes, and so each node will deliver\ntraffic only to the node-local endpoints of the service, without masquerading\nthe client source IP. (Traffic mistakenly sent to a node with no endpoints will\nbe dropped.) The default value, \"Cluster\", uses the standard behavior of\nrouting to all endpoints evenly (possibly modified by topology and other\nfeatures). Note that traffic sent to an External IP or LoadBalancer IP from\nwithin the cluster will always get \"Cluster\" semantics, but clients sending to\na NodePort from within the cluster may need to take traffic policy into account\nwhen picking a node.\n+optional" }, "healthCheckNodePort": { "type": "integer", "format": "int32", - "title": "healthCheckNodePort specifies the healthcheck nodePort for the service.\nThis only applies when type is set to LoadBalancer and\nexternalTrafficPolicy is set to Local. If a value is specified, is\nin-range, and is not in use, it will be used. If not specified, a value\nwill be automatically allocated. External systems (e.g. load-balancers)\ncan use this port to determine if a given node holds endpoints for this\nservice or not. If this field is specified when creating a Service\nwhich does not need it, creation will fail. This field will be wiped\nwhen updating a Service to no longer need it (e.g. changing type).\n+optional" + "title": "healthCheckNodePort specifies the healthcheck nodePort for the service.\nThis only applies when type is set to LoadBalancer and\nexternalTrafficPolicy is set to Local. If a value is specified, is\nin-range, and is not in use, it will be used. If not specified, a value\nwill be automatically allocated. External systems (e.g. load-balancers)\ncan use this port to determine if a given node holds endpoints for this\nservice or not. If this field is specified when creating a Service\nwhich does not need it, creation will fail. This field will be wiped\nwhen updating a Service to no longer need it (e.g. changing type).\nThis field cannot be updated once set.\n+optional" }, "internalTrafficPolicy": { "type": "string", - "title": "InternalTrafficPolicy specifies if the cluster internal traffic\nshould be routed to all endpoints or node-local endpoints only.\n\"Cluster\" routes internal traffic to a Service to all endpoints.\n\"Local\" routes traffic to node-local endpoints only, traffic is\ndropped if no node-local endpoints are ready.\nThe default value is \"Cluster\".\n+featureGate=ServiceInternalTrafficPolicy\n+optional" + "title": "InternalTrafficPolicy describes how nodes distribute service traffic they\nreceive on the ClusterIP. If set to \"Local\", the proxy will assume that pods\nonly want to talk to endpoints of the service on the same node as the pod,\ndropping the traffic if there are no local endpoints. The default value,\n\"Cluster\", uses the standard behavior of routing to all endpoints evenly\n(possibly modified by topology and other features).\n+optional" }, "ipFamilies": { - "description": "IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this\nservice, and is gated by the \"IPv6DualStack\" feature gate. This field\nis usually assigned automatically based on cluster configuration and the\nipFamilyPolicy field. If this field is specified manually, the requested\nfamily is available in the cluster, and ipFamilyPolicy allows it, it\nwill be used; otherwise creation of the service will fail. This field\nis conditionally mutable: it allows for adding or removing a secondary\nIP family, but it does not allow changing the primary IP family of the\nService. Valid values are \"IPv4\" and \"IPv6\". This field only applies\nto Services of types ClusterIP, NodePort, and LoadBalancer, and does\napply to \"headless\" services. This field will be wiped when updating a\nService to type ExternalName.\n\nThis field may hold a maximum of two entries (dual-stack families, in\neither order). These families must correspond to the values of the\nclusterIPs field, if specified. Both clusterIPs and ipFamilies are\ngoverned by the ipFamilyPolicy field.\n+listType=atomic\n+optional", + "description": "IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this\nservice. This field is usually assigned automatically based on cluster\nconfiguration and the ipFamilyPolicy field. If this field is specified\nmanually, the requested family is available in the cluster,\nand ipFamilyPolicy allows it, it will be used; otherwise creation of\nthe service will fail. This field is conditionally mutable: it allows\nfor adding or removing a secondary IP family, but it does not allow\nchanging the primary IP family of the Service. Valid values are \"IPv4\"\nand \"IPv6\". This field only applies to Services of types ClusterIP,\nNodePort, and LoadBalancer, and does apply to \"headless\" services.\nThis field will be wiped when updating a Service to type ExternalName.\n\nThis field may hold a maximum of two entries (dual-stack families, in\neither order). These families must correspond to the values of the\nclusterIPs field, if specified. Both clusterIPs and ipFamilies are\ngoverned by the ipFamilyPolicy field.\n+listType=atomic\n+optional", "type": "array", "items": { "type": "string" @@ -5130,15 +5315,15 @@ }, "ipFamilyPolicy": { "type": "string", - "title": "IPFamilyPolicy represents the dual-stack-ness requested or required by\nthis Service, and is gated by the \"IPv6DualStack\" feature gate. If\nthere is no value provided, then this field will be set to SingleStack.\nServices can be \"SingleStack\" (a single IP family), \"PreferDualStack\"\n(two IP families on dual-stack configured clusters or a single IP family\non single-stack clusters), or \"RequireDualStack\" (two IP families on\ndual-stack configured clusters, otherwise fail). The ipFamilies and\nclusterIPs fields depend on the value of this field. This field will be\nwiped when updating a service to type ExternalName.\n+optional" + "title": "IPFamilyPolicy represents the dual-stack-ness requested or required by\nthis Service. If there is no value provided, then this field will be set\nto SingleStack. Services can be \"SingleStack\" (a single IP family),\n\"PreferDualStack\" (two IP families on dual-stack configured clusters or\na single IP family on single-stack clusters), or \"RequireDualStack\"\n(two IP families on dual-stack configured clusters, otherwise fail). The\nipFamilies and clusterIPs fields depend on the value of this field. This\nfield will be wiped when updating a service to type ExternalName.\n+optional" }, "loadBalancerClass": { "type": "string", - "title": "loadBalancerClass is the class of the load balancer implementation this Service belongs to.\nIf specified, the value of this field must be a label-style identifier, with an optional prefix,\ne.g. \"internal-vip\" or \"example.com/internal-vip\". Unprefixed names are reserved for end-users.\nThis field can only be set when the Service type is 'LoadBalancer'. If not set, the default load\nbalancer implementation is used, today this is typically done through the cloud provider integration,\nbut should apply for any default implementation. If set, it is assumed that a load balancer\nimplementation is watching for Services with a matching class. Any default load balancer\nimplementation (e.g. cloud providers) should ignore Services that set this field.\nThis field can only be set when creating or updating a Service to type 'LoadBalancer'.\nOnce set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.\n+featureGate=LoadBalancerClass\n+optional" + "title": "loadBalancerClass is the class of the load balancer implementation this Service belongs to.\nIf specified, the value of this field must be a label-style identifier, with an optional prefix,\ne.g. \"internal-vip\" or \"example.com/internal-vip\". Unprefixed names are reserved for end-users.\nThis field can only be set when the Service type is 'LoadBalancer'. If not set, the default load\nbalancer implementation is used, today this is typically done through the cloud provider integration,\nbut should apply for any default implementation. If set, it is assumed that a load balancer\nimplementation is watching for Services with a matching class. Any default load balancer\nimplementation (e.g. cloud providers) should ignore Services that set this field.\nThis field can only be set when creating or updating a Service to type 'LoadBalancer'.\nOnce set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type.\n+optional" }, "loadBalancerIP": { "type": "string", - "title": "Only applies to Service Type: LoadBalancer\nLoadBalancer will get created with the IP specified in this field.\nThis feature depends on whether the underlying cloud-provider supports specifying\nthe loadBalancerIP when a load balancer is created.\nThis field will be ignored if the cloud-provider does not support the feature.\n+optional" + "title": "Only applies to Service Type: LoadBalancer.\nThis feature depends on whether the underlying cloud-provider supports specifying\nthe loadBalancerIP when a load balancer is created.\nThis field will be ignored if the cloud-provider does not support the feature.\nDeprecated: This field was under-specified and its meaning varies across implementations,\nand it cannot support dual-stack.\nAs of Kubernetes v1.24, users are encouraged to use implementation-specific annotations when available.\nThis field may be removed in a future API version.\n+optional" }, "loadBalancerSourceRanges": { "type": "array", @@ -5216,12 +5401,12 @@ "title": "Represents a StorageOS persistent volume resource.", "properties": { "fsType": { - "description": "Filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n+optional", + "description": "fsType is the filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n+optional", "type": "string", "x-go-name": "FSType" }, "readOnly": { - "description": "Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\n+optional", + "description": "readOnly defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\n+optional", "type": "boolean", "x-go-name": "ReadOnly" }, @@ -5229,12 +5414,12 @@ "$ref": "#/definitions/v1LocalObjectReference" }, "volumeName": { - "description": "VolumeName is the human-readable name of the StorageOS volume. Volume\nnames are only unique within a namespace.", + "description": "volumeName is the human-readable name of the StorageOS volume. Volume\nnames are only unique within a namespace.", "type": "string", "x-go-name": "VolumeName" }, "volumeNamespace": { - "description": "VolumeNamespace specifies the scope of the volume within StorageOS. If no\nnamespace is specified then the Pod's namespace will be used. This allows the\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\nSet VolumeName to any name to override the default behaviour.\nSet to \"default\" if you are not using namespaces within StorageOS.\nNamespaces that do not pre-exist within StorageOS will be created.\n+optional", + "description": "volumeNamespace specifies the scope of the volume within StorageOS. If no\nnamespace is specified then the Pod's namespace will be used. This allows the\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\nSet VolumeName to any name to override the default behaviour.\nSet to \"default\" if you are not using namespaces within StorageOS.\nNamespaces that do not pre-exist within StorageOS will be created.\n+optional", "type": "string", "x-go-name": "VolumeNamespace" } @@ -5274,10 +5459,12 @@ "x-go-package": "k8s.io/api/core/v1" }, "v1TaintEffect": { + "description": "+enum", "type": "string", "x-go-package": "k8s.io/api/core/v1" }, "v1TerminationMessagePolicy": { + "description": "+enum", "type": "string", "title": "TerminationMessagePolicy describes how termination messages are retrieved from a container.", "x-go-package": "k8s.io/api/core/v1" @@ -5319,6 +5506,7 @@ "x-go-package": "k8s.io/api/core/v1" }, "v1TolerationOperator": { + "description": "+enum", "type": "string", "title": "A toleration operator is the set of operators that can be used in a toleration.", "x-go-package": "k8s.io/api/core/v1" @@ -5330,14 +5518,34 @@ "labelSelector": { "$ref": "#/definitions/v1LabelSelector" }, + "matchLabelKeys": { + "description": "MatchLabelKeys is a set of pod label keys to select the pods over which\nspreading will be calculated. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are ANDed with labelSelector\nto select the group of existing pods over which spreading will be calculated\nfor the incoming pod. Keys that don't exist in the incoming pod labels will\nbe ignored. A null or empty list means only match against labelSelector.\n+listType=atomic\n+optional", + "type": "array", + "items": { + "type": "string" + }, + "x-go-name": "MatchLabelKeys" + }, "maxSkew": { - "description": "MaxSkew describes the degree to which pods may be unevenly distributed.\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\nbetween the number of matching pods in the target topology and the global minimum.\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\nlabelSelector spread as 1/1/0:\n+-------+-------+-------+\n zone1 | zone2 | zone3 |\n+-------+-------+-------+\n P | P | |\n+-------+-------+-------+\nif MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1;\nscheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2)\nviolate MaxSkew(1).\nif MaxSkew is 2, incoming pod can be scheduled onto any zone.\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\nto topologies that satisfy it.\nIt's a required field. Default value is 1 and 0 is not allowed.", + "description": "MaxSkew describes the degree to which pods may be unevenly distributed.\nWhen `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference\nbetween the number of matching pods in the target topology and the global minimum.\nThe global minimum is the minimum number of matching pods in an eligible domain\nor zero if the number of eligible domains is less than MinDomains.\nFor example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same\nlabelSelector spread as 2/2/1:\nIn this case, the global minimum is 1.\n+-------+-------+-------+\n zone1 | zone2 | zone3 |\n+-------+-------+-------+\n P P | P P | P |\n+-------+-------+-------+\nif MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 2/2/2;\nscheduling it onto zone1(zone2) would make the ActualSkew(3-1) on zone1(zone2)\nviolate MaxSkew(1).\nif MaxSkew is 2, incoming pod can be scheduled onto any zone.\nWhen `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence\nto topologies that satisfy it.\nIt's a required field. Default value is 1 and 0 is not allowed.", "type": "integer", "format": "int32", "x-go-name": "MaxSkew" }, + "minDomains": { + "description": "MinDomains indicates a minimum number of eligible domains.\nWhen the number of eligible domains with matching topology keys is less than minDomains,\nPod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed.\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\nthis value has no effect on scheduling.\nAs a result, when the number of eligible domains is less than minDomains,\nscheduler won't schedule more than maxSkew Pods to those domains.\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\nValid values are integers greater than 0.\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\n\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\nlabelSelector spread as 2/2/2:\n+-------+-------+-------+\n zone1 | zone2 | zone3 |\n+-------+-------+-------+\n P P | P P | P P |\n+-------+-------+-------+\nThe number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0.\nIn this situation, new pod with the same labelSelector cannot be scheduled,\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\nit will violate MaxSkew.\n\nThis is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default).\n+optional", + "type": "integer", + "format": "int32", + "x-go-name": "MinDomains" + }, + "nodeAffinityPolicy": { + "$ref": "#/definitions/v1NodeInclusionPolicy" + }, + "nodeTaintsPolicy": { + "$ref": "#/definitions/v1NodeInclusionPolicy" + }, "topologyKey": { - "description": "TopologyKey is the key of node labels. Nodes that have a label with this key\nand identical values are considered to be in the same topology.\nWe consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number\nof pods into each bucket.\nIt's a required field.", + "description": "TopologyKey is the key of node labels. Nodes that have a label with this key\nand identical values are considered to be in the same topology.\nWe consider each \u003ckey, value\u003e as a \"bucket\", and try to put balanced number\nof pods into each bucket.\nWe define a domain as a particular instance of a topology.\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\nnodeAffinityPolicy and nodeTaintsPolicy.\ne.g. If TopologyKey is \"kubernetes.io/hostname\", each Node is a domain of that topology.\nAnd, if TopologyKey is \"topology.kubernetes.io/zone\", each zone is a domain of that topology.\nIt's a required field.", "type": "string", "x-go-name": "TopologyKey" }, @@ -5369,12 +5577,39 @@ }, "x-go-package": "k8s.io/api/core/v1" }, + "v1TypedObjectReference": { + "type": "object", + "properties": { + "apiGroup": { + "description": "APIGroup is the group for the resource being referenced.\nIf APIGroup is not specified, the specified Kind must be in the core API group.\nFor any other third-party types, APIGroup is required.\n+optional", + "type": "string", + "x-go-name": "APIGroup" + }, + "kind": { + "description": "Kind is the type of resource being referenced", + "type": "string", + "x-go-name": "Kind" + }, + "name": { + "description": "Name is the name of resource being referenced", + "type": "string", + "x-go-name": "Name" + }, + "namespace": { + "description": "Namespace is the namespace of resource being referenced\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.\n+featureGate=CrossNamespaceVolumeDataSource\n+optional", + "type": "string", + "x-go-name": "Namespace" + } + }, + "x-go-package": "k8s.io/api/core/v1" + }, "v1URIScheme": { - "description": "URIScheme identifies the scheme used for connection to a host for Get actions", + "description": "URIScheme identifies the scheme used for connection to a host for Get actions\n+enum", "type": "string", "x-go-package": "k8s.io/api/core/v1" }, "v1UnsatisfiableConstraintAction": { + "description": "+enum", "type": "string", "x-go-package": "k8s.io/api/core/v1" }, @@ -5437,7 +5672,7 @@ "$ref": "#/definitions/v1ISCSIVolumeSource" }, "name": { - "description": "Volume's name.\nMust be a DNS_LABEL and unique within the pod.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "description": "name of the volume.\nMust be a DNS_LABEL and unique within the pod.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string", "x-go-name": "Name" }, @@ -5553,22 +5788,22 @@ "title": "Represents a vSphere volume resource.", "properties": { "fsType": { - "description": "Filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n+optional", + "description": "fsType is filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\n+optional", "type": "string", "x-go-name": "FSType" }, "storagePolicyID": { - "description": "Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\n+optional", + "description": "storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.\n+optional", "type": "string", "x-go-name": "StoragePolicyID" }, "storagePolicyName": { - "description": "Storage Policy Based Management (SPBM) profile name.\n+optional", + "description": "storagePolicyName is the storage Policy Based Management (SPBM) profile name.\n+optional", "type": "string", "x-go-name": "StoragePolicyName" }, "volumePath": { - "description": "Path that identifies vSphere volume vmdk", + "description": "volumePath is the path that identifies vSphere volume vmdk", "type": "string", "x-go-name": "VolumePath" } diff --git a/testsuite/testcases/basic/cancel_by_id_1x1.yaml b/testsuite/testcases/basic/cancel_by_id_1x1.yaml index baf90d49dd4..10bf56ec6b7 100644 --- a/testsuite/testcases/basic/cancel_by_id_1x1.yaml +++ b/testsuite/testcases/basic/cancel_by_id_1x1.yaml @@ -10,20 +10,20 @@ jobs: containers: - name: cancel-by-id imagePullPolicy: IfNotPresent - image: alpine:3.10 + image: alpine:3.20.0 args: - "sleep" - "100s" resources: limits: - memory: 10Mi + memory: 25Mi cpu: 100m requests: - memory: 10Mi + memory: 25Mi cpu: 100m --- cancel: BY_ID timeout: "100s" expectedEvents: - submitted: - - cancelled: \ No newline at end of file + - cancelled: diff --git a/testsuite/testcases/basic/cancel_by_ids_1x10.yaml b/testsuite/testcases/basic/cancel_by_ids_1x10.yaml index e549f81b86c..623b07c8fb1 100644 --- a/testsuite/testcases/basic/cancel_by_ids_1x10.yaml +++ b/testsuite/testcases/basic/cancel_by_ids_1x10.yaml @@ -10,16 +10,16 @@ jobs: containers: - name: cancel-by-id imagePullPolicy: IfNotPresent - image: alpine:3.10 + image: alpine:3.20.0 args: - "sleep" - "100s" resources: limits: - memory: 10Mi + memory: 25Mi cpu: 100m requests: - memory: 10Mi + memory: 25Mi cpu: 100m --- cancel: BY_IDS diff --git a/testsuite/testcases/basic/cancel_by_set_1x1.yaml b/testsuite/testcases/basic/cancel_by_set_1x1.yaml index b6a801c7d05..83bf26fd429 100644 --- a/testsuite/testcases/basic/cancel_by_set_1x1.yaml +++ b/testsuite/testcases/basic/cancel_by_set_1x1.yaml @@ -10,20 +10,20 @@ jobs: containers: - name: cancel-by-set imagePullPolicy: IfNotPresent - image: alpine:3.10 + image: alpine:3.20.0 args: - "sleep" - "100s" resources: limits: - memory: 10Mi + memory: 25Mi cpu: 100m requests: - memory: 10Mi + memory: 25Mi cpu: 100m --- cancel: BY_SET timeout: "100s" expectedEvents: - submitted: - - cancelled: \ No newline at end of file + - cancelled: diff --git a/testsuite/testcases/basic/failure_1x1.yaml b/testsuite/testcases/basic/failure_1x1.yaml index 6d4f8194d71..748568a1d0f 100644 --- a/testsuite/testcases/basic/failure_1x1.yaml +++ b/testsuite/testcases/basic/failure_1x1.yaml @@ -10,19 +10,19 @@ jobs: containers: - name: sleep imagePullPolicy: IfNotPresent - image: alpine:3.10 + image: alpine:3.20.0 args: - "exit" - "1" resources: limits: - memory: 10Mi + memory: 25Mi cpu: 100m requests: - memory: 10Mi + memory: 25Mi cpu: 100m --- timeout: "100s" expectedEvents: - submitted: - - failed: \ No newline at end of file + - failed: diff --git a/testsuite/testcases/basic/failure_errimagepull.yaml b/testsuite/testcases/basic/failure_errimagepull.yaml index 0d68f948e89..0759d13797a 100644 --- a/testsuite/testcases/basic/failure_errimagepull.yaml +++ b/testsuite/testcases/basic/failure_errimagepull.yaml @@ -15,14 +15,14 @@ jobs: - "ls" resources: limits: - memory: 10Mi + memory: 25Mi cpu: 100m requests: - memory: 10Mi + memory: 25Mi cpu: 100m --- timeout: "300s" expectedEvents: - submitted: - unableToSchedule: - - failed: \ No newline at end of file + - failed: diff --git a/testsuite/testcases/basic/failure_namespace.yaml b/testsuite/testcases/basic/failure_namespace.yaml index 08d4908971a..338176cc1c1 100644 --- a/testsuite/testcases/basic/failure_namespace.yaml +++ b/testsuite/testcases/basic/failure_namespace.yaml @@ -10,18 +10,18 @@ jobs: containers: - name: failure-namespace imagePullPolicy: IfNotPresent - image: alpine:3.10 + image: alpine:3.20.0 args: - "ls" resources: limits: - memory: 10Mi + memory: 25Mi cpu: 100m requests: - memory: 10Mi + memory: 25Mi cpu: 100m --- timeout: "100s" expectedEvents: - submitted: - - failed: \ No newline at end of file + - failed: diff --git a/testsuite/testcases/basic/failure_oom_1x1.yaml b/testsuite/testcases/basic/failure_oom_1x1.yaml index 56dadb02512..819e602dd83 100644 --- a/testsuite/testcases/basic/failure_oom_1x1.yaml +++ b/testsuite/testcases/basic/failure_oom_1x1.yaml @@ -10,16 +10,16 @@ jobs: containers: - name: oom imagePullPolicy: IfNotPresent - image: alpine:3.10 + image: alpine:3.20.0 args: - "tail" - "/dev/zero" resources: limits: - memory: 10Mi + memory: 25Mi cpu: 100m requests: - memory: 10Mi + memory: 25Mi cpu: 100m --- timeout: "300s" diff --git a/testsuite/testcases/basic/ingress.yaml b/testsuite/testcases/basic/ingress.yaml index c6c24a86499..a620cb7effb 100644 --- a/testsuite/testcases/basic/ingress.yaml +++ b/testsuite/testcases/basic/ingress.yaml @@ -15,7 +15,7 @@ jobs: containers: - name: nc imagePullPolicy: IfNotPresent - image: alpine:3.10 + image: alpine:3.20.0 # Server responding to the first request with a 200 status code and then exiting. args: ["nc", "-l", "-p", "4000", "-e", "echo", "HTTP/1.1 200 OK\nContent-Length: 12\nConnection: close\nContent-Type: text/html\n\nHello world!"] resources: @@ -34,4 +34,4 @@ timeout: "100s" expectedEvents: - submitted: - ingressInfo: - - succeeded: \ No newline at end of file + - succeeded: diff --git a/testsuite/testcases/basic/priorityclass_default.yaml b/testsuite/testcases/basic/priorityclass_default.yaml index 23ca07af1e2..86ee4b5198d 100644 --- a/testsuite/testcases/basic/priorityclass_default.yaml +++ b/testsuite/testcases/basic/priorityclass_default.yaml @@ -11,19 +11,19 @@ jobs: containers: - name: sleep imagePullPolicy: IfNotPresent - image: alpine:3.10 + image: alpine:3.20.0 args: - "sleep" - "1" resources: limits: - memory: 10Mi + memory: 25Mi cpu: 100m requests: - memory: 10Mi + memory: 25Mi cpu: 100m --- timeout: "130s" expectedEvents: - submitted: - - succeeded: \ No newline at end of file + - succeeded: diff --git a/testsuite/testcases/basic/submit_1x1.yaml b/testsuite/testcases/basic/submit_1x1.yaml index a1073d37507..3d8061bbfa3 100644 --- a/testsuite/testcases/basic/submit_1x1.yaml +++ b/testsuite/testcases/basic/submit_1x1.yaml @@ -10,18 +10,18 @@ jobs: containers: - name: sleep imagePullPolicy: IfNotPresent - image: alpine:3.10 + image: alpine:3.20.0 args: - "ls" resources: limits: - memory: 10Mi + memory: 25Mi cpu: 100m requests: - memory: 10Mi + memory: 25Mi cpu: 100m --- timeout: "100s" expectedEvents: - submitted: - - succeeded: \ No newline at end of file + - succeeded: diff --git a/testsuite/testcases/basic/submit_2x3.yaml b/testsuite/testcases/basic/submit_2x3.yaml index 654fd0d5c49..1f5728de177 100644 --- a/testsuite/testcases/basic/submit_2x3.yaml +++ b/testsuite/testcases/basic/submit_2x3.yaml @@ -10,18 +10,18 @@ jobs: containers: - name: sleep imagePullPolicy: IfNotPresent - image: alpine:3.10 + image: alpine:3.20.0 args: - "ls" resources: limits: - memory: 10Mi + memory: 25Mi cpu: 100m requests: - memory: 10Mi + memory: 25Mi cpu: 100m --- timeout: "100s" expectedEvents: - submitted: - - succeeded: \ No newline at end of file + - succeeded: diff --git a/testsuite/testcases/basic/submit_fileshare_1x1.yaml b/testsuite/testcases/basic/submit_fileshare_1x1.yaml index 7c04bf4c8a9..5cca3e0ddc5 100644 --- a/testsuite/testcases/basic/submit_fileshare_1x1.yaml +++ b/testsuite/testcases/basic/submit_fileshare_1x1.yaml @@ -13,7 +13,7 @@ jobs: initContainers: - name: writer imagePullPolicy: IfNotPresent - image: alpine:3.10 + image: alpine:3.20.0 command: - sh - -c @@ -24,10 +24,10 @@ jobs: mountPath: /usr/share/test resources: limits: - memory: 10Mi + memory: 25Mi cpu: 100m requests: - memory: 10Mi + memory: 25Mi cpu: 100m containers: - name: reader @@ -50,13 +50,13 @@ jobs: mountPath: /usr/share/test resources: limits: - memory: 10Mi + memory: 25Mi cpu: 100m requests: - memory: 10Mi + memory: 25Mi cpu: 100m --- timeout: "100s" expectedEvents: - submitted: - - succeeded: \ No newline at end of file + - succeeded: diff --git a/testsuite/testcases/basic/submit_random_clientid.yaml b/testsuite/testcases/basic/submit_random_clientid.yaml index b52510ad3ce..e071a66ec9a 100644 --- a/testsuite/testcases/basic/submit_random_clientid.yaml +++ b/testsuite/testcases/basic/submit_random_clientid.yaml @@ -11,7 +11,7 @@ jobs: containers: - name: ls imagePullPolicy: IfNotPresent - image: alpine:3.10 + image: alpine:3.20.0 args: - "ls" resources: diff --git a/testsuite/testcases/performance/submit_10x100.yaml b/testsuite/testcases/performance/submit_10x100.yaml index 4856aee7ecf..dda7ca7baed 100644 --- a/testsuite/testcases/performance/submit_10x100.yaml +++ b/testsuite/testcases/performance/submit_10x100.yaml @@ -16,13 +16,13 @@ jobs: - "Hello world!" resources: limits: - memory: 10Mi + memory: 25Mi cpu: 15m requests: - memory: 10Mi + memory: 25Mi cpu: 15m --- timeout: "1800s" expectedEvents: - submitted: - - succeeded: \ No newline at end of file + - succeeded: diff --git a/testsuite/testcases/performance/submit_1x1K.yaml b/testsuite/testcases/performance/submit_1x1K.yaml index 75a2cd155ef..ec8d5343512 100644 --- a/testsuite/testcases/performance/submit_1x1K.yaml +++ b/testsuite/testcases/performance/submit_1x1K.yaml @@ -16,13 +16,13 @@ jobs: - "Hello world!" resources: limits: - memory: 10Mi + memory: 25Mi cpu: 100m requests: - memory: 10Mi + memory: 25Mi cpu: 100m --- timeout: "900s" expectedEvents: - submitted: - - succeeded: \ No newline at end of file + - succeeded: diff --git a/testsuite/testcases/performance/submit_load_1x500.yaml b/testsuite/testcases/performance/submit_load_1x500.yaml index 4ba03a4b63c..7d1be585249 100644 --- a/testsuite/testcases/performance/submit_load_1x500.yaml +++ b/testsuite/testcases/performance/submit_load_1x500.yaml @@ -21,13 +21,13 @@ jobs: - -v resources: limits: - memory: 10Mi + memory: 25Mi cpu: 50m requests: - memory: 10Mi + memory: 25Mi cpu: 50m --- timeout: "600s" expectedEvents: - submitted: - - succeeded: \ No newline at end of file + - succeeded: diff --git a/testsuite/testcases/performance/submit_load_5x100.yaml b/testsuite/testcases/performance/submit_load_5x100.yaml index 80db256b46e..b3cecfc3077 100644 --- a/testsuite/testcases/performance/submit_load_5x100.yaml +++ b/testsuite/testcases/performance/submit_load_5x100.yaml @@ -21,13 +21,13 @@ jobs: - -v resources: limits: - memory: 10Mi + memory: 25Mi cpu: 50m requests: - memory: 10Mi + memory: 25Mi cpu: 50m --- timeout: "600s" expectedEvents: - submitted: - - succeeded: \ No newline at end of file + - succeeded: diff --git a/tools.yaml b/tools.yaml index 6a04fd8b55b..9335b7e03b3 100644 --- a/tools.yaml +++ b/tools.yaml @@ -12,4 +12,4 @@ tools: - github.com/mitchellh/gox@v1.0.1 - github.com/wlbr/templify@v0.0.0-20210816202250-7b8044ca19e9 - golang.org/x/tools/cmd/goimports@v0.5.0 -- sigs.k8s.io/kind@v0.14.0 +- sigs.k8s.io/kind@v0.23.0